[MO901] Android 下忍 – 2011

Post on 17-May-2015

145 views 0 download

Tags:

description

Pa

transcript

Android 下忍Douglas Drumond drumond.douglas@gmail.com

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

Email

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