A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Projeto Avançado de Software II 7 – Revisão da Lição 4A Eduardo de Lucena Falcão.

Apresentações semelhantes


Apresentação em tema: "Projeto Avançado de Software II 7 – Revisão da Lição 4A Eduardo de Lucena Falcão."— Transcrição da apresentação:

1 Projeto Avançado de Software II 7 – Revisão da Lição 4A Eduardo de Lucena Falcão

2 O que aprendemos? Ciclo de vida de uma Activity O básico do SQLite (operações CRUD) 2 ok

3 Activity Life Cycle 3 Evitar falhas (chamada telefônica); promover um consumo adequado de recursos; não perder progresso do usuário (quando girar a tela).

4 Principais estados de uma Activity Resumed – Activity em primeiro plano, e o usuário consegue interagir; Paused – Activity parcialmente obscurecida por uma outra activity (que estará no primeiro plano). A outra activity que está em primeiro plano é semi-transparente ou não cobre totalmente a tela. A activity pausada não recebe entrada do usuário e não executa nenhum código. Stopped – Activity completamente oculta e não é visível para o usuário. Considera-se que está em segundo plano (background) 4

5 5

6 Demais estados de uma Activity Os outros estados (created e started) são temporários e o sistema rapidamente se move de um estado a outro chamando o próximo método de retorno de chamada do ciclo de vida. Isto é, depois que o sistema chama onCreate(), ele rapidamente chama onStart(), que é seguido por onResume().onCreate()onStart()onResume() Isso é tudo que precisamos saber sobre o ciclo de vida básico de atividades. 6

7 Transições onCreate() – Executado apenas uma vez. Deve ser utilizado para realizar a lógica básica de inicialização do aplicativo. Normalmente, é aí que definimos a interface do usuário. 7

8 Transições onStart() e onResume() – Depois que o onCreate() termina de executar, o sistema chama os métodos onStart() e onResume() em rápida sucessão. A atividade nunca reside nos estados created ou started. Logo após onStart() executar, o onResumed() será executado e a activity permanecerá no estado resumed até que algo ocorra (como uma ligação)onCreate()onStart()onResume() 8

9 Transições on Destroy() – Último sinal de que a atividade está sendo removida da memória do sistema. A maioria dos aplicativos não exige a implementação desse método porque referências de classe locais são destruídas com a atividade, que realiza a maior parte da limpeza durante onPause() e onStop(). No entanto, se a atividade incluir threads de segundo plano ou outro recurso de longa execução que pode vazar memória se não forem fechados adequadamente, você deve finalizá-los durante onDestroy().onPause()onStop()onDestroy() 9

10 Pausando uma atividade Use onPause() para: – Interromper animações ou outras ações em andamento que consomem a CPU. – Consolidar alterações não salvas apenas se o usuário esperar que essas alterações sejam permanentemente salvas ao saírem (como um rascunho de email). – Liberar recursos do sistema, como receptores, cabos para sensores (como GPS), ou outros recursos que podem afetar a vida da bateria enquanto a atividade estiver pausada e o usuário não precisar deles. Evite executar trabalhos de uso intensivo da CPU durante onPause(), como gravar em um banco de dados, porque isso pode retardar a transição visível para a próxima atividade (execute operações de encerramento pesadas durante onStop()).onPause()onStop() 10

11 Reiniciando uma atividade Use onResume() para: – Inicializar os componentes liberados durante onPause() e execute quaisquer outras inicializações que devem ocorrer sempre que a atividade entrar em estado Resumed;onPause() 11

12 Parando uma atividade Situações que param uma atividade: – Abrir os aplicativos recentes (alt+tab) – Quando o usuário executa uma ação que inicia outra activity; – Quando o usuário recebe um telefonema. Nota: como o sistema retém a instância Activity na memória quando interrompida, talvez não seja necessário implementar os métodos onStop() e onRestart(). Para a maioria das atividades que são relativamente simples, a atividade será interrompida e reiniciada normalmente e talvez seja necessário apenas usar onPause() para pausar ações em andamento e desconectar dos recursos do sistema.ActivityonStop()onRestart()onPause() Use onStop() para: – Liberar recursos que podem vazar memória. – Executar operações de desligamento maiores, que exigem mais da CPU, como escrever informação no banco de dados. 12

13 Parando uma atividade 13

14 Reiniciando uma atividade Use onRestart() para: – executar trabalhos de restauração especiais necessários apenas se a atividade tiver sido interrompida; – Dificilmente um aplicativo precisará usar onRestart() para restaurar o estado da atividade. Portanto, não há diretrizes para este método que se apliquem à população geral de aplicativos. Contudo, como espera-se que o método onStop() limpe todos os recursos da atividade, será necessário instanciá-los quando a atividade for reiniciada.onRestart()onStop() 14

15 Recriando uma Activity Situações que pode requerer recriação da activity: – quando o usuário pressiona o botão Voltar ou sua atividade sinaliza sua própria destruição chamando finish().finish() – O sistema também pode destruir a atividade se for interrompida e não tiver sido utilizada por um longo período de tempo ou a atividade do primeiro plano exigir mais recursos, então, o sistema deverá fechar processos de segundo plano para recuperar memória. 15

16 Recriando uma Activity Embora a instância real da Activity tenha se perdido, o sistema lembra que ela existiu de forma que se o usuário navegar de volta, o sistema criará uma nova instância da atividade usando um conjunto de dados salvos que descrevem o estado da atividade quando foi destruída. Os dados salvos utilizados pelo sistema para restaurar o estado anterior é chamado de “estado da instância” e é uma coleção de pares de valores-chave armazenados no objeto Bundle.ActivityBundle O Bundle armazena as informações anteriormente existentes na interface gráfica. – Por padrão, o sistema usa o estado da instância Bundle para salvar informações sobre cada objeto View em seu layout de atividade (como o valor do texto informado em um objeto EditText). Assim, se a instância da atividade for destruída e recriada, o estado do layout é restaurado em seu estado anterior sem que haja necessidade de códigos. No entanto, sua atividade pode conter mais informações de estado do que se deseja restaurar, como varáveis de membro que rastreiam o progresso do usuário na atividade.BundleViewEditText 16

17 Recriando uma Activity Para salvar dados adicionais sobre o estado da atividade, substitua o método de retorno de chamada onSaveInstanceState().onSaveInstanceState() – onSaveInstanceState() é sempre executado antes de onPause() onSaveInstanceState() Para recriar a instância da atividade posteriormente, o sistema transmitirá o mesmo objeto Bundle para ambos os métodos onRestoreInstanceState() e onCreate().Bundle onRestoreInstanceState()onCreate() – onRestoreInstanceState() é sempre executado depois de onCreate() onRestoreInstanceState() 17

18 Recriando uma Activity 18

19 Opções de Armazenamento Shared Preferences – Store private primitive data in key-value pairs. Internal Storage – Store private data on the device memory. External Storage – Store public data on the shared external storage. SQLite Databases – Store structured data in a private database. Network Connection – Store data on the web with your own network server. 19

20 Armazenamento interno e externo 20

21 SQLite 21

22 Começamos pelo contrato 22

23 SQLiteOpenHelper A helper class to manage database creation and version management. Basta criar uma classe que estenda SQLiteOpenHelper que implementem onCreate(SQLiteDatabase), onUpgrade(SQLiteDat abase, int, int) e opcionalmente onOpen(SQLiteDatabase). Esta classe se encarregará de abrir o BD (caso exista), criá-lo (caso não exista) e fazer um upgrade (caso necessário). onCreate(SQLiteDatabase)onUpgrade(SQLiteDat abase, int, int) onOpen(SQLiteDatabase) 23

24 24

25 25

26 SQLiteDatabase Classe usada para gerenciar o BD. – Métodos para criar, deletar, executar comandos SQL e executar operações comuns em BDs. Usamos ContentValues como wrappers para adicionar os dados ao BD. Usamos o método insert para adicionar o conteúdo em ContentValues ao BD. Utilizamos a interface query para facilitar a criação de um select. 26

27 27

28 O resultado do método query é uma instância de um Cursor, um objeto que permite percorrer todos os elementos retornados pela query. 28


Carregar ppt "Projeto Avançado de Software II 7 – Revisão da Lição 4A Eduardo de Lucena Falcão."

Apresentações semelhantes


Anúncios Google