[MO901] Android 下忍 – 2011
-
Upload
douglas-drumond -
Category
Technology
-
view
147 -
download
0
description
Transcript of [MO901] Android 下忍 – 2011
Android 下忍Douglas Drumond [email protected]
Por que Android?
Crescimento
Source: Gartner (Feb 2011)
Crescimento
Symbian AndroidRIM iOSMicrosoft Other OS
Source: Gartner (Feb 2011)
Crescimento
Symbian AndroidRIM iOSMicrosoft Other OS
Symbian Android RIMiOS Microsoft Other OS
Source: Gartner (Feb 2011)
Crescimento
Symbian AndroidRIM iOSMicrosoft Other OS
Symbian Android RIMiOS Microsoft Other OS
Source: Gartner (Feb 2011)
Crescimento
Symbian AndroidRIM iOSMicrosoft Other OS
Symbian Android RIMiOS Microsoft Other OS
Source: Gartner (Feb 2011)
Android Market share
Source: Techcrunch
Android Market share
Source: Techcrunch
Android Market (apps)
Android Market (apps)
• Aproximadamente 300.000
Android Market (apps)
• Aproximadamente 300.000
• 30.000 novos aplicativos por mês
Android Market (apps)
• Aproximadamente 300.000
• 30.000 novos aplicativos por mês
• Estimativa de download: 3,8 bilhões de apps
O que é?
O que é?
Linux Kernel
Bibliotecas
Framework
Aplicações
Dalvik
Livre
Livre
Livre
Livre
• Acesso ao código-fonte
Livre
• the definition of open: "mkdir android ; cd android ; repo init -u git://android.git.kernel.org/platform/manifest.git ; repo sync ; make"
http://twitter.com/#!/arubin/status/27808662429
Versões
Arquitetura
Arquitetura
Linux Kernel
Arquitetura
Linux Kernel
Bibliotecas Dalvik
Arquitetura
Linux Kernel
Bibliotecas
Framework
Dalvik
Arquitetura
Linux Kernel
Bibliotecas
Framework
Aplicações
Dalvik
Arquitetura
Linux Kernel
Bibliotecas
Framework
Aplicações
Dalvik
Arquitetura
Arquitetura
Linux Kernel
Arquitetura
Linux Kernel
Display Driver
Keypad Driver
Camera Driver
WiFi Driver
Flash Memory Driver
Audio Driver
Gerenciamento de energia
IPC
Arquitetura
Linux Kernel
Bibliotecas
Framework
Aplicações
Dalvik
Arquitetura
Dalvik
Arquitetura
Dalvik
Arquitetura
• Baseada em registradores
• .dex
Arquitetura
Linux Kernel
Bibliotecas
Framework
Aplicações
Dalvik
Arquitetura
Arquitetura
Bibliotecas
Arquitetura
Bibliotecas
Surface Manager
OpenGL ES
Media Framework
FreeType
SSL
SQLite
libc (bionic)
WebKit
Arquitetura
Linux Kernel
Bibliotecas
Framework
Aplicações
Dalvik
Arquitetura
Arquitetura
Application Framework
Arquitetura
Application Framework
Activity Manager
Window Manager
Content Providers
Telephony Manager
Location Manager
Resource Manager
View System
Notification Manager
Arquitetura
Linux Kernel
Bibliotecas
Framework
Aplicações
Dalvik
Arquitetura
Arquitetura
Aplicações
Arquitetura
Aplicações
Home
Contacts
Phone
Browser
SMS
Music
Maps
Dissecando as Aplicações
Activity
Activity
• Interface
Activity
• Interface
• Um objetivo
Activity
• Interface
• Um objetivo
• Várias por aplicativo
Activity
• Interface
• Um objetivo
• Várias por aplicativo
• Pode iniciar outras activities
Activity
• Interface
• Um objetivo
• Várias por aplicativo
• Pode iniciar outras activities
• Herda de Activity
Activity
Activity
Activity
• 3 estados: ativa, em pausa e parada
Activity
• 3 estados: ativa, em pausa e parada
• 3 ciclos de vida
Activity
• 3 estados: ativa, em pausa e parada
• 3 ciclos de vida
• pode morrer a qualquer momento se não estiver ativa
Activity
ActivityonCreate()
ActivityonCreate()
onStart()
ActivityonCreate()
onStart()
onResume()
ActivityonCreate()
onStart()
onResume()
em execução
ActivityonCreate()
onStart()
onResume()
em execução
onPause()
ActivityonCreate()
onStart()
onResume()
em execução
onPause()
ActivityonCreate()
onStart()
onResume()
em execução
onPause()
Primeiro plano
ActivityonCreate()
onStart()
onResume()
em execução
onPause()
onStop()
Primeiro plano
ActivityonCreate()
onStart() onRestart()
onResume()
em execução
onPause()
onStop()
Primeiro plano
ActivityonCreate()
onStart() onRestart()
onResume()
em execução
onPause()
onStop()
Primeiro plano
ActivityonCreate()
onStart() onRestart()
onResume()
em execução
onPause()
onStop()
Primeiro plano
Visível
ActivityonCreate()
onStart() onRestart()
onResume()
em execução
onPause()
onStop()
onDestroy()
Primeiro plano
Visível
ActivityonCreate()
onStart() onRestart()
onResume()
em execução
onPause()
onStop()
onDestroy()
shutdown
Primeiro plano
Visível
ActivityonCreate()
onStart() onRestart()
onResume()
em execução
onPause()
onStop()
onDestroy()
shutdown
Primeiro plano
Visível
Ciclo de vida completo
Service
Service
• Sem interface
Service
• Sem interface
• Roda em segundo plano
Service
• Sem interface
• Roda em segundo plano
• Executa na thread principal
Service
• Sem interface
• Roda em segundo plano
• Executa na thread principal
• Herda de Service
Service
Service
Service
• Ativo ou parado
Service
• Ativo ou parado
• Roda em segundo plano
Service
• Ativo ou parado
• Roda em segundo plano
• Pouco provável de ser morto
Service
ServiceonCreate()
ServiceonCreate()
onStart()
ServiceonCreate()
onStart()
em execução
ServiceonCreate()
onStart()
em execução
onDestroy()
ServiceonCreate()
onStart()
em execução
onDestroy()
Ciclo de vida em atividade
ServiceonCreate()
onStart()
em execução
onDestroy()
shutdown
Ciclo de vida em atividade
ServiceonCreate()
onStart()
em execução
onDestroy()
shutdown
Ciclo de vida em atividade
Ciclo de vida completo
Content Provider
Content Provider
• Disponibiliza dados para outros aplicativos
Content Provider
• Disponibiliza dados para outros aplicativos
• Sistema de arquivos ou SQLite
Content Provider
• Disponibiliza dados para outros aplicativos
• Sistema de arquivos ou SQLite
• Herda de ContentProvider
Content Provider
Broadcast Receiver
Broadcast Receiver
• Não possui interface (com usuário)
Broadcast Receiver
• Não possui interface (com usuário)
• Roda em segundo plano
Broadcast Receiver
• Não possui interface (com usuário)
• Roda em segundo plano
• Reage a mensagens de broadcast
Broadcast Receiver
• Não possui interface (com usuário)
• Roda em segundo plano
• Reage a mensagens de broadcast
• Exemplo: carga de bateria
Broadcast Receiver
• Não possui interface (com usuário)
• Roda em segundo plano
• Reage a mensagens de broadcast
• Exemplo: carga de bateria
• Herda de BroadcastReceiver
Broadcast Receiver
Broadcast Receiver
onReceive()
Broadcast Receiver
onReceive()
em execução
Broadcast Receiver
onReceive()
em execução
Fim
Broadcast Receiver
onReceive()
em execução
Fim
Ciclo de vida em atividade
Intent
Intent
• Possui um alvo facultativo
Intent
• Possui um alvo facultativo
• Se não tiver especificado alvo, o sistema encontra um
Intent
• Possui um alvo facultativo
• Se não tiver especificado alvo, o sistema encontra um
• Pode executar uma Activity ou Service específico
Intent
• Possui um alvo facultativo
• Se não tiver especificado alvo, o sistema encontra um
• Pode executar uma Activity ou Service específico
• IntentFilters
Intent
Intent
Intent
Intent
Intent
Ferramentas
Pré-requisitos
Pré-requisitos
• JDK
Pré-requisitos
• JDK
• Android SDK
Ambiente
Ambiente
• Linux
Ambiente
• Linux
• Mac OS X (Intel)
Ambiente
• Linux
• Mac OS X (Intel)
• Windows XP ou superior
Ferramentas
Ferramentas
Ferramentas
Ferramentas
Ferramentas
Ferramentas
Ferramentas
• Remote debugger
• logcat
• DDMS
Ferramentas
Ferramentas
Ferramentas
Google Chrome
Google Chrome
Android Market
Android Market
Desenvolvedor escolhe o preço
Android Market
Desenvolvedor escolhe o preço
30/70
Android Market
Desenvolvedor escolhe o preço
30/70
US$ 99,00/ano
Android Market
Desenvolvedor escolhe o preço
30/70
Android Market
Android Market
Desenvolvedor escolhe o preço
Android Market
Desenvolvedor escolhe o preço
30/70
US$ 25,00 uma única vez
Android Market
Desenvolvedor escolhe o preço
30/70
O que estão esperando?
• developer.android.com
Obrigado
Créditos
•http://www.flickr.com/photos/xazac/5090246138/sizes/s/in/photostream/ •http://www.flickr.com/photos/bfishadow/4290430790/sizes/s/in/photostream/ •http://www.flickr.com/photos/nickbutcher/5529239187/sizes/m/in/photostream/ •http://www.flickr.com/photos/3bilder/5113921580/sizes/m/in/photostream/ •http://www.flickr.com/photos/abulhussain/4543434080/sizes/o/in/photostream/ •http://developer.android.com/guide/developing/debugging/debugging-tracing.html