ea998/mc933 guido araujo e sandro rigosandro/cursos/mc933/aula2-building...– entender os...
TRANSCRIPT
![Page 1: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/1.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
1
EA998/MC933 Guido Araujo e Sandro Rigo
![Page 2: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/2.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
2
Hoje • Ch1: Android Overview
• Ch2: The Stack
• Ch3: Quick Start
• Ch4: Main Building Blocks
• Ch5: Yamba Project Overview
• Ch6: Android User Interface
• Ch7: Preferences, Project Overview, Filesystems, Menus and Intents
• Ch8: Services
• Ch9: Database
• Ch10: List Adapters
• Ch11: Broadcast receivers
![Page 3: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/3.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
3
Hoje • Ch1: Android Overview
• Ch2: The Stack
• Ch3: Quick Start
• Ch4: Main Building Blocks
• Ch5: Yamba Project Overview
• Ch6: Android User Interface
• Ch7: Preferences, Project Overview, Filesystems, Menus and Intents
• Ch8: Services
• Ch9: Database
• Ch10: List Adapters
• Ch11: Broadcast receivers
![Page 4: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/4.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
4
Main Building Blocks • Componentes de projeto Android
– Activities
– Intents
– Services
– Broadcast Receivers
– Content Providers
• Objetivo da aula – Entender os componentes principais de projeto usando do Android
– Compreender quando usar estes componentes
– Entender relação destes componentes com o ambiente
![Page 5: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/5.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
5
Um Exemplo Real
• Estratégia de projeto – Top-down
– Pensar nas telas que o usuário irá ver
– Quais as caracterísiticas e funcionalidades de cada tela
– Como as tela interagem entre si.
• Twitter (Yamba) – Tela 1: usuário informa suas atualizações
– Tela 2: usuário é capaz de ver o que os seus amigos estão fazendo
– Tela 3: usuário precisa entrar nome de usuário de senha
![Page 6: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/6.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
6
Principais Requisitos
• Precisa ser rápido e independente da rede no ar
• Usar uma cache local que permita trazer dados remotos
• Demanda um banco de dados
• Requer um serviço executando em background
• Serviço em background deve ser iniciado quando dispositivo ligar
![Page 7: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/7.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
7
Activities
• Características – Activity: uma única tela que o usuário ver por vez
– Equivalente a uma página web
– Possui também uma main activity semelhante a uma homepage
– Navegação semelhante à Web
• Exemplo – Está dentro da app Contact e escolhe um amigo para enviar texto
– Laça uma nova activity para compor uma mensagem de texto na app Messaging
![Page 8: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/8.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
8
Lançando uma activity
• Muito custoso
• Cria um processo Linux
• Aloca memória para objetos do usuário da UI
• Gera objetos a partir dos seus layouts XML
• Prepara e ajusta toda a tela
![Page 9: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/9.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
9
Activity Manager (AM)
• Funções principais – Gerenciador de “cache” de atividades
– Criar, destruir e gerenciar activities
– Projetista tem pouco controle dos recursos (CPU e bateria)
– No início cria a atividade e coloca-a na tela
– Quando o usuário troca de activity move a anterior para estado de espera
– Quando o usuário retornar a atividade pode ser mostrada mais rapidamente
– Activities mais antigas são destruídas a medida que vão ficando velhas
![Page 10: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/10.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
10
AM: Máquina de Estados (Life Cycle)
![Page 11: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/11.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
11
AM: Starting
Cria e inicializa uma atividade
Muito custosa em energia
Métodos usados para transição – onCreate()
– onStart()
– onResume()
![Page 12: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/12.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
12
AM: Running
Activity na tela e interagindo
Activity em “foco”
Somente uma exec. por vez
Gerencia tarefas como: – Digitação
– Toque de telas
– Clique de botões
Prioridade máxima de recursos
![Page 13: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/13.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
13
AM: Pause
Entra quando onPause() executa
Na tela, mas não interagindo
Exemplo: dialog box na frente de uma activity
Podem mover-se para estados: – Sttoped: via onStop()
– Running: via onResume()
Prioridade máxima de recursos
![Page 14: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/14.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
14
AM: Stopped
Activity não visível
Ainda na memória
Na tela, mas não interagindo
Mesmo assim pode estar exec.
Podem mover-se para estados: – Destroy: via onDestroy()
– Running: via
onCreate()
onStart()
onResume()
![Page 15: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/15.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
15
AM: Destroyed
Activity não é mais necessária
Antes de destruída pode realizar algumas tarefas como salvar dados, etc.
Em alguns casos pode ser destruída em Paused
Melhor deixar para salvar dados antes de entrar em Paused vindo de Running
![Page 16: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/16.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
16
Intents (IT)
• Características principais – Mensagens enviadas entre os blocos da aplicação
– Disparam uma activity na inicialização – Informam o serviço para começar ou terminar
– Intents são assíncronas, o código que as envia não precisa aguardar que elas concluam
![Page 17: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/17.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
17
Intents (IT)
• Podem ser explícitas ou implícitas – Explícita: especifica que componente deve receber a
msg. – Implícita: qualquer aplicação que oferece o serviço pode
receber – Se implícita, o sistema lista e app escolhe. Pode definir
uma default – Permite baixar novas app e trocar serviços usados pela
sua app
![Page 18: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/18.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
18
Intents (IT)
![Page 19: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/19.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
19
Services (SV) • Características principais
– Executam em background
– Não possuem qualquer componente de UI – Executam mesmas ações de activities, mas sem UI
– Úteis quando desejamos executar por algum tempo, independente do que está na tela
– NOTA: Não confundir com serviços de baixo nível do Linux
• Exemplo – Um tocador de música quando usando outras apps
![Page 20: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/20.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
20
SV: Life Cycle
Mais simples que o AM
Inicia ou Finaliza:
– Starting
– Running
– Destroyed
Projetista tem mais controle dos recursos (CPU e bateria)
Precisa cuidar do uso adequado
![Page 21: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/21.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
21
Activities e Services
• Threads – Services executam em background mas não
necessariamente em uma tthread separada – Default: Services e Activities executam na mesma thread
principal da aplicação, chamada UI thread
– Dica importante:
• Usar thread separada para quaisquer operações potencialmente longas (ex. chamada de rede)
– De outra forma a UI vai ficar muito lenta
![Page 22: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/22.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
22
Content Providers (CP)
• Características principais – Interfaces para partilhar dados entre aplicações
– Android usa modelo de sand-box isolando apps
– CP passa dados persistentes entre aplicações
– CP API obedece aos princípios de CRUD para uso de dados (Create, Read Update and Delete)
– Métodos bem simples:
insert()
update()
delete()
query()
![Page 23: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/23.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
23
Content Providers (CP) • Exemplos
– Contacts Provider: expõe contatos do usuário a todas apps
– Settings Provider: expõe configuração do sistema a todas apps
– Media Store: armazena e expõe fotos, músicas para todas apps
![Page 24: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/24.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
24
Content Providers (CP)
• Separação de papéis entre Activity e CP – Activity não possui contatos do usuário
– CP não possui qualquer interface com usuário
– Flexibiliza em muito o projeto
• Exemplos: – Instalar nova app para livro de endereços, usando os mesmos
dados do Contacts Provider
– Instalar novos widgets na tela principal que permite alterar os ajustes do Settings Provider (ex. WiFi on and off).
– Fabricantes usam muito isto para adicionar suas apps sobre o Android padrão
![Page 25: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/25.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
25
Broadcast Receivers (BR) • Características principais
– Implementação Android do modelo Observer Pattern
– BR é um pedaço de código dormente que acorda quando ocorre um evento que ele assinou em um Broadcast
– Usado para iniciar activities, services, etc.
• Exemplos – Muito usado pelo próprio sistema
– Chegada de um SMS, Bateria ficando baixa, sistema inicializado
– No caso do Yamba, iniciar o sistema de update quando do boot
– Subscrever o seu BR ao Broadcast que informa que o sistema completou o boot
![Page 26: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/26.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
26
Application Context (AC) • Características principais
– Ambiente e processo da App
– Componentes anteriores executam dentro de um AC – Permite que eles partilhem dados e recursos
– Criada quando o primeiro componente da App é iniciado
– Viva enquanto a App viver independente das activities
• Referência para AC – Context.getApplicationContext(), ou – Activity.getApplication()
![Page 27: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/27.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
27
Aulas • Ch1: Android Overview
• Ch2: The Stack
• Ch3: Quick Start
• Ch4: Main Building Blocks
• Ch5: Yamba Project Overview
• Ch6: Android User Interface
• Ch7: Preferences, Project Overview, Filesystems, Menus and Intents
• Ch8: Services
• Ch9: Database
• Ch10: List Adapters
• Ch11: Broadcast receivers
![Page 28: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/28.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
28
Yamba
• Características – Yet Another Micro Blogging App
– Semelhante ao Twitter – App familiar à maioria dos alunos
– Permite conectar ao serviço, ver status dos amigos e atualizar o próprio status
– Cobre a maioria dos blocos vistos anteriormente
![Page 29: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/29.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
29
Friends Timeline
![Page 30: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/30.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
30
User Status Update
![Page 31: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/31.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
31
User Preferences
![Page 32: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/32.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
32
Yamba: Filosofia do Projeto
• Incremental – Vamos acompanhando em lab. o desenvolvimento
– Gradualmente crescendo em funcionalidade e complexidade
• Sempre completo – Projetando em pedaços (activities, services, broadcast receivers)
– App precisa sempre funcionar, mesmos em etapas intermediárias do projeto.
• Refatoração de código – Enfatizar reuso sempre
– Livro usa refino do projeto de uma solução para outra melhor
![Page 33: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/33.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
33
Yamba Project Overview
![Page 34: EA998/MC933 Guido Araujo e Sandro Rigosandro/cursos/mc933/aula2-Building...– Entender os componentes principais de projeto usando do Android – Compreender quando usar estes componentes](https://reader031.vdocuments.site/reader031/viewer/2022031207/5bc2bbca09d3f2a4318dd44c/html5/thumbnails/34.jpg)
EA998/MC933: Desenvolvimento de Aplicações Móveis http://www.ic.unicamp.br/~guido
34
Aulas • Ch1: Android Overview
• Ch2: The Stack
• Ch3: Quick Start
• Ch4: Main Building Blocks
• Ch5: Yamba Project Overview
• Ch6: Android User Interface
• Ch7: Preferences, Project Overview, Filesystems, Menus and Intents
• Ch8: Services
• Ch9: Database
• Ch10: List Adapters
• Ch11: Broadcast receivers