Atividades e Intenções (Android)

4.666 visualizações

Publicada em

Publicada em: Tecnologia
0 comentários
5 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
4.666
No SlideShare
0
A partir de incorporações
0
Número de incorporações
6
Ações
Compartilhamentos
0
Downloads
113
Comentários
0
Gostaram
5
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Atividades e Intenções (Android)

  1. 1. Aula 02(Android Basico)
  2. 2. Activities e IntentsNatanael FonsecaArquiteto de SoftwareSite Pessoal: www.natanaelfonseca.com.br
  3. 3. Ementa O que é uma Activity(Atividade); Como aplicar estilos e temas; Como exibir uma Activity como um dialogo; Entendendo Intents(Intenções); Como realizar link de activities através de intents; Intent filters(Filtro de Intenções); Notifications(Notificações);
  4. 4. O que é uma Activity Uma aplicação pode ter uma ou mais Atividades; Serve para incluir a lógica de iteração com o usuário; São sempre declaradas no arquivo AndroidManifest.xml; Responsáveis por “inflar” o layout xml correspondente a UI; Possui um ciclo de vida; Normalmente trabalham de modo que ou estão ativas e visíveis ou inativas numa stack;
  5. 5. Ciclo de Vida de uma ActivityonCreate() — Chamado quando a atividade é criada elaprimeira vez;onStart() — Chamado quando a atividade se torna visível parao usuário;onResume() — Chamado quando a atividade inicia a iteraçãocom o usuário;onPause() — Chamado quando a atividade corrente estásendo pausada e uma outra atividadeestá sendo resumida(Resumed);onStop() — Chamado quando a atividade não está mais visívelpara o usuário;onDestroy() — Chamado antes da atividade ser destruida pelosistema(Ou manualmente ou pelo sistemapara economizar memória)onRestart() — Chamado quando a atividade foiparada(Stopped) e restartada novamente;
  6. 6. Exemplo Exemplo Aula02_Lifecycle.zip Trecho relevante @Override Tratar os eventos: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); • Sleep Log.d( TAG, "onCreate()"); • Home Buttom setContentView(R.layout.main); } • Orientação @Override protected void onPause() { super.onPause(); Log.d(TAG, "onPause()"); } @Override protected void onResume() { super.onResume(); Log.d(TAG, "onResume()"); }
  7. 7. Importante...1 - Sempre fazer quaisquer chamada(s) a findViewById, sempre depois de inflar o Layout Ex: setContentView(R.layout.main); TextView textView = (TextView) findViewById(R.id.textView);2 – Declarar no arquivo AndroidManifest.xml a Activity criada, conforme exemplo Abaixo:
  8. 8. Tratando Mudanças de Configuração• A configuração de um dispositivo pode mudar em tempo de execução. Possíveis mudanças são: – Orientação da Tela; – Disponibilidade do Teclado; – Alteração do Idioma;• Quando uma mudança de configuração Acontece, o Android recria a atividade, chamando: – onDestroy() seguido de onCreate().
  9. 9. onSaveInstanceState e onRestoreInstanceState Sua aplicação deve estar apta a reiniciar sem perder os dados do usuário ou estado. O Android fornece os métodos onSaveInstanceState e onRestoreInstanceState para salvar as informações de estado. Uma maneira bem comum de guardar suas informações é fazer da seguinte forma: • Salvar as variáveis de instancia(Somente o necessário) no método onSaveInstanceState; • Após o evento de mudança, Recuperar as varáveis ou no método onCreate ou no método onRestoreInstanceState;
  10. 10. ExemploPerceba que existe um if @Override public void onCreate(Bundle savedInstanceState) {dentro do método onCreate super.onCreate (savedInstanceState);testando se o bundle é nullo. if( savedInstanceState != null ){Quando acontecer de não ser // recupere os valores do bundlenulo, possivelmente houve um }evento de mudança de } @Overrideconfiguração. public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); savedInstanceState.putString("MyInstanceVariable", variable); } @Override public void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); variable = savedInstanceState.getString("MyInstanceVariable"); }
  11. 11. Recuperando a Activity mas Pensando no usuário.Algumas vezes podemos encontrar situações emque reiniciar a aplicação e recuperar uma porçãode informação pode ser algo custoso, nesse casopodemos pensar nas seguintes alternativas : Manter um objeto durante uma mudança de configuração; Tratar a mudança de Configuração na própria Atividade.
  12. 12. Mantendo um Objeto durante uma mudança de configuraçãoPara reter um objeto durante uma mudança deconfiguração, basta : Sobrescrever o método onRetainNonConfigurationInstance() para retornar o objeto que nos gostariamos de manter; Quando a atividade é criada novamente, bata chamar o método getLastNonConfigurationInstance() para recuperar o objeto.
  13. 13. Tratando você mesmo a mudança de ConfiguraçãoIsso vai acontecer nos casos em que:• Você não precisa atualizar nenhum recurso;• Você possui uma limitação de desempenho;Mas cuidado, essa técnica deve ser usada em ultimoestágio, e ela não é recomendada para a maioria dasaplicações.
  14. 14. Exemplo Alterar o exemplo abaixopara fazer uso do método:getLastNonConfigurationInstance()Ex: Aula02_ConfigChange.zip Tratar os eventos: • LandScape • Portrait
  15. 15. Tratando você mesmo a mudança de ConfiguraçãoPara declarar que você vai tratar as mudanças de configuraçãobasta fazer : – Declarar o atributo android:configChanges dentro da tag <activity> do AndroidManifest.xml; – Declarar qual ou quais mudanças você quer tratar por sua propria conta, por exemplo: orientation, keyboardHidden; – Sobrescrever o método onConfigurationChanged(Configuration config);
  16. 16. Exemplo Alterar o exemplo abaixopara fazer uso deAndroid:ConfigChanges.Ex: Aula02_ConfigChange.zip Tratar os eventos: • LandScape • Portrait
  17. 17. Aplicando TemasNo arquivo AndroidManifest.xmlvocê coloca o tema:
  18. 18. Aplicando EstilosNo arquivo AndroidManifest.xml você declara o estilo :Dentro da pasta values, basta criar o arquivo style.xml com o conteúdo :
  19. 19. Activity como DialogoÈ possivel fazer com que uma activity se pareçacom um dialog, apenas trocando o estilo noArquivo Android AndroidManifest.xml.Ex:Aula02_ActivityAsDialog.zipTrecho relevante :<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Dialog" >
  20. 20. Dialogos Pequena janela que pede do usuario alguma decisão ou pede a ele alguma informação Adicional.
  21. 21. Subclasses de “Dialog” Evite instanciar a classe Dialog diretamente, ao invés você deve utilizar uma de suas subclasses : – AlertDialog – DatePickerDialog – TimePickerDialog Ou se precisar criar um Dialog ainda mais personalizado, você deve utilizar DialogFragment; Analisar o exemplo Aula2_DisplayingADialog.zip. Maiores informações acesse: pagina oficial.
  22. 22. Entendendo Intents Representam uma descrição abstrata de uma operação. Pode ser utilizado pelo método startActivity() para disparar uma mensagem de broadcast que e executada por qualquer broadcast receiver interessado. Pode ser utilizado pelo método bindService(Intent, ServiceConnection, int) para comunicar com qualquer “service” em background.
  23. 23. Estrutura fundamental de um IntentNo geral um “intent” é composto por duas partes fundamentais, a ação e os dados.(Action) A ação geral a ser executada, exemplo : • ACTION_VIEW • ACTION_EDIT • ACTION_MAIN(Data) A informação a ser trabalhada, tal como uma pessoa no registro de banco dedados, essas inforações são expressas através de uma URI. Alguns exemplos de paresaction/data são: • ACTION_VIEW content://contacts/people/1 • ACTION_DIAL content://contacts/people/1 • ACTION_VIEW tel:123 • ACTION_DIAL tel:123 • ACTION_EDIT content://contacts/people/1 • ACTION_VIEW content://contacts/people/ • ACTION_VIEW content://contacts/NConsultar a pagina do google sobre intent.
  24. 24. Outros atributos de um intent category - fornece algumas informações adicionais a respeito a ação a ser executada, por exemplo: CATEGORY_LAUNCHER significa que deve aparecer como uma Top- Level application, normalmente como um icone da lista de programas(default). CATEGORY_ALTERNATIVE significa que deve aparecer na lista de programas alternativos. type - Especifica um tipo explicito (um tipo MIME) para os dados sendo passsados. component - Expecifica um nome explicito ao componente. extras - Um Bundle com informações adicionais, no caso de um email podemos incluir aqui partes como o corpo do email, assunto, remetende e destinatário.
  25. 25. Chamando outras ActivitiesNo android, você pode navegar entre activities usando “intents” das seguintes formas: Passando apenas a ação (Forma implicita) : Intent intent = new Intent("com.example.callinganotheractivity.SecondActivity"); startActivity( intent ); Dentro do mesmo projeto, então podemos fazer (Forma explicita): Intent intent = new Intent( this, SecondActivity.class ); startActivity( intent );
  26. 26. Passando e recuperando parametros entre Activities É possivel passar um “bundle” com os parametros para a activity sendo chamada, Além disso, é possivel esperar pelo resultado de outra activity utilizando o método startActivityForResult. Com startActivityForResult você chama uma outra atividade esperando por um retorno. No callback onActivityResult() você recupera o valor fornecido pela activity chamada.Analisar o exemplo: Aula02_CallingAnotherActivity.zip
  27. 27. Intent FiltersAjuda o android a saber se o componente atende ao intent :<intent-filter> <action android:name="com.example.callinganotheractivity.SecondActivity" /> <category android:name="android.intent.category.DEFAULT" /></intent-filter>
  28. 28. Intent ResolutionSomente três aspectos são consultados quando o android precisar resolver o intent informado, são eles: – action – data (both URI and data type) – category
  29. 29. NotificationsÈ possivel notificar o usuário sobre uma informação importante utilizando “Toasts”. Ex: Toast.makeText(this, “Texto para o usuário”, Toast.LENGTH_SHORT).show(); Contudo, a notificação se perde depois de alguns segundos, uma segundaforma ainda mais persistente e elegante é o sistema de notificações doandroid fornecido pela classe NotificationManager.
  30. 30. NotificationManagerClasse que serve para notificar que alguma coisa aconteceu em background;As notificações podem assumir diferentes formas - Um ícone persistente na status bar que ao ser clicado pode disparar um intent; - Ligando e desligando LEDs no device; - Alerta com o flash da câmera, tocando um som ou vibração. Analisar o exemplo: Aula02_DisplayANotification.zip
  31. 31. Conceitos úteisNotificationManager é a classe principal para iteragir com o serviço de notificações do android.Um objeto “PendingIntent” ajuda a realizar uma ação em nome do aplicativo, muitas vezes em um momento posterior, independentemente se a aplicação esta ou não rodando.
  32. 32. Referencias Beginning Android™ Application Development, Wei-Meng Lee, Wiley 2011. Android Training : http://developer.android.com/training/index.html.

×