SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Aula 02
(Android Basico)
Activities e Intents

Natanael Fonseca
Arquiteto de Software



Site Pessoal: www.natanaelfonseca.com.br
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);
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;
Ciclo de Vida de uma Activity
onCreate() — Chamado quando a atividade é criada ela
primeira vez;

onStart() — Chamado quando a atividade se torna visível para
o usuário;

onResume() — Chamado quando a atividade inicia a iteração
com o usuário;

onPause() — Chamado quando a atividade corrente está
sendo pausada e uma outra atividade
está sendo resumida(Resumed);

onStop() — Chamado quando a atividade não está mais visível
para o usuário;

onDestroy() — Chamado antes da atividade ser destruida pelo
sistema(Ou manualmente ou pelo sistema
para economizar memória)

onRestart() — Chamado quando a atividade foi
parada(Stopped) e restartada novamente;
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()");
     }
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:
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().
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;
Exemplo
Perceba 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 bundle
nulo, possivelmente houve um      }
evento de mudança de            }
                                @Override
configuraçã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");
                                }
Recuperando a Activity mas Pensando
            no usuário.
Algumas vezes podemos encontrar situações em
que reiniciar a aplicação e recuperar uma porção
de informação pode ser algo custoso, nesse caso
podemos 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.
Mantendo um Objeto durante uma
      mudança de configuração

Para reter um objeto durante uma mudança de
configuraçã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.
Tratando você mesmo a mudança de
            Configuração

Isso 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 ultimo
estágio, e ela não é recomendada para a maioria das
aplicações.
Exemplo
 Alterar o exemplo abaixo
para fazer uso do método:
getLastNonConfigurationInstance()

Ex: Aula02_ConfigChange.zip



             Tratar os eventos:
             • LandScape
             • Portrait
Tratando você mesmo a mudança de
              Configuração

Para declarar que você vai tratar as mudanças de configuração
basta 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);
Exemplo
 Alterar o exemplo abaixo
para fazer uso de
Android:ConfigChanges.

Ex: Aula02_ConfigChange.zip


              Tratar os eventos:
              • LandScape
              • Portrait
Aplicando Temas

No arquivo AndroidManifest.xml
você coloca o tema:
Aplicando Estilos
No arquivo AndroidManifest.xml você declara o estilo :



Dentro da pasta values, basta criar o arquivo style.xml com o conteúdo :
Activity como Dialogo
È possivel fazer com que uma activity se pareça
com um dialog, apenas trocando o estilo no
Arquivo Android AndroidManifest.xml.

Ex:

Aula02_ActivityAsDialog.zip


Trecho relevante :

<application
   android:allowBackup="true"
   android:icon="@drawable/ic_launcher"
   android:label="@string/app_name"
   android:theme="@android:style/Theme.Dialog" >
Dialogos
 Pequena janela que pede do usuario alguma decisão ou
  pede a ele alguma informação Adicional.
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.
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.
Estrutura fundamental de um Intent
No 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 de
dados, essas inforações são expressas através de uma URI. Alguns exemplos de pares
action/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/N

Consultar a pagina do google sobre intent.
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.
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 );
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
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>
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
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 segunda
forma ainda mais persistente e elegante é o sistema de notificações do
android fornecido pela classe NotificationManager.
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
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.
Referencias

 Beginning Android™ Application Development, Wei-Meng Lee, Wiley 2011.
 Android Training : http://developer.android.com/training/index.html.

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidJosé Alexandre Macedo
 
Introdução ao android e plataforma android
Introdução ao android e plataforma androidIntrodução ao android e plataforma android
Introdução ao android e plataforma androidJuarez Junior
 
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Matheus Calegaro
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Tchelinux
 
Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo OliveiraRonildo Oliveira
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidTiago Bencardino
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidSidney Roberto
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao AndroidBruno Lui
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidRafael Sakurai
 
Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03Horacio Diamante Mondlane
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2Jose Berardo
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3Jose Berardo
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - BásicoHugoDalevedove
 

Was ist angesagt? (20)

Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
 
Android Aula 4
Android Aula 4Android Aula 4
Android Aula 4
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
 
Google android pdf
Google android pdfGoogle android pdf
Google android pdf
 
Introdução ao android e plataforma android
Introdução ao android e plataforma androidIntrodução ao android e plataforma android
Introdução ao android e plataforma android
 
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2Introdução ao desenvolvimento de apps para Android - Dia 2/2
Introdução ao desenvolvimento de apps para Android - Dia 2/2
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
 
Android
AndroidAndroid
Android
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
 
Minicurso Android Ronildo Oliveira
Minicurso Android  Ronildo OliveiraMinicurso Android  Ronildo Oliveira
Minicurso Android Ronildo Oliveira
 
Introdução ao Android Studio
Introdução ao Android StudioIntrodução ao Android Studio
Introdução ao Android Studio
 
Computação Móvel 2012.2 - Android
Computação Móvel 2012.2 - AndroidComputação Móvel 2012.2 - Android
Computação Móvel 2012.2 - Android
 
Tutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para AndroidTutorial - Como criar sua primeira app para Android
Tutorial - Como criar sua primeira app para Android
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
 
Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03Apostila passo a passo como programar em android edição03
Apostila passo a passo como programar em android edição03
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 

Andere mochten auch

Aula 02 - Android. Intent, Intent Filters
Aula 02 - Android. Intent, Intent FiltersAula 02 - Android. Intent, Intent Filters
Aula 02 - Android. Intent, Intent FiltersArthur Emanuel
 
Android - Criando um Adapter personalizado para uma Agenda de Contatos
Android - Criando um Adapter personalizado para uma Agenda de ContatosAndroid - Criando um Adapter personalizado para uma Agenda de Contatos
Android - Criando um Adapter personalizado para uma Agenda de ContatosETEC Monsenhor Antonio Magliano
 
Aula 2 conjuntose combinatória
Aula 2   conjuntose combinatóriaAula 2   conjuntose combinatória
Aula 2 conjuntose combinatóriawab030
 
Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)Ricardo Longa
 
Aula 05/06 (Notification)
Aula 05/06 (Notification)Aula 05/06 (Notification)
Aula 05/06 (Notification)Ricardo Longa
 
Pomodoro agil
Pomodoro agilPomodoro agil
Pomodoro agilRenato
 
Android na prática - USCS
Android na prática - USCSAndroid na prática - USCS
Android na prática - USCSRenato
 
Introduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.RIntroduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.RRenato
 
Aula 10 04 (Gerenciadores de layouts)
Aula 10 04 (Gerenciadores de layouts)Aula 10 04 (Gerenciadores de layouts)
Aula 10 04 (Gerenciadores de layouts)Ricardo Longa
 
Aula 10 04 (intents)
Aula 10 04 (intents)Aula 10 04 (intents)
Aula 10 04 (intents)Ricardo Longa
 
Android Palestra
Android PalestraAndroid Palestra
Android PalestraRenato
 
android_overview
android_overviewandroid_overview
android_overviewRenato
 
Aula 05/06 (Service)
Aula 05/06 (Service)Aula 05/06 (Service)
Aula 05/06 (Service)Ricardo Longa
 
Aula 5 - 24/04 (Landscape / Portrait)
Aula 5 - 24/04 (Landscape / Portrait)Aula 5 - 24/04 (Landscape / Portrait)
Aula 5 - 24/04 (Landscape / Portrait)Ricardo Longa
 
Aula 22/05 (Handler)
Aula 22/05 (Handler)Aula 22/05 (Handler)
Aula 22/05 (Handler)Ricardo Longa
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
 
Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)Ricardo Longa
 
K19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com AndroidK19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com AndroidAline Diniz
 

Andere mochten auch (20)

Aula 02 - Android. Intent, Intent Filters
Aula 02 - Android. Intent, Intent FiltersAula 02 - Android. Intent, Intent Filters
Aula 02 - Android. Intent, Intent Filters
 
Android - Criando um Adapter personalizado para uma Agenda de Contatos
Android - Criando um Adapter personalizado para uma Agenda de ContatosAndroid - Criando um Adapter personalizado para uma Agenda de Contatos
Android - Criando um Adapter personalizado para uma Agenda de Contatos
 
Aula 2 conjuntose combinatória
Aula 2   conjuntose combinatóriaAula 2   conjuntose combinatória
Aula 2 conjuntose combinatória
 
Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)
 
Aula 05/06 (Notification)
Aula 05/06 (Notification)Aula 05/06 (Notification)
Aula 05/06 (Notification)
 
Pomodoro agil
Pomodoro agilPomodoro agil
Pomodoro agil
 
Android na prática - USCS
Android na prática - USCSAndroid na prática - USCS
Android na prática - USCS
 
Introduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.RIntroduction Android - C.E.S.A.R
Introduction Android - C.E.S.A.R
 
Aula 10 04 (Gerenciadores de layouts)
Aula 10 04 (Gerenciadores de layouts)Aula 10 04 (Gerenciadores de layouts)
Aula 10 04 (Gerenciadores de layouts)
 
Aula 10 04 (intents)
Aula 10 04 (intents)Aula 10 04 (intents)
Aula 10 04 (intents)
 
Aula 12/06 (SQLite)
Aula 12/06 (SQLite)Aula 12/06 (SQLite)
Aula 12/06 (SQLite)
 
Android Palestra
Android PalestraAndroid Palestra
Android Palestra
 
android_overview
android_overviewandroid_overview
android_overview
 
Aula 05/06 (Service)
Aula 05/06 (Service)Aula 05/06 (Service)
Aula 05/06 (Service)
 
Aula 5 - 24/04 (Landscape / Portrait)
Aula 5 - 24/04 (Landscape / Portrait)Aula 5 - 24/04 (Landscape / Portrait)
Aula 5 - 24/04 (Landscape / Portrait)
 
Aula 22/05 (Handler)
Aula 22/05 (Handler)Aula 22/05 (Handler)
Aula 22/05 (Handler)
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento android
 
Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)
 
Oficina Sesc Android - V1
Oficina Sesc Android - V1Oficina Sesc Android - V1
Oficina Sesc Android - V1
 
K19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com AndroidK19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com Android
 

Ähnlich wie Android Activities Intents

Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em AndroidPedro Veloso
 
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdfAula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdfnosbisantos
 
Curso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesCurso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesRonildo Oliveira
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Rodrigo Rocha
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Erisvaldo Junior
 
Seminário sd android_exemplos
Seminário sd android_exemplosSeminário sd android_exemplos
Seminário sd android_exemplosCalvin Rodrigues
 
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IVBackbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IVJoão Helis Bernardo
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineCampus Party Brasil
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Ilton Barbosa
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
 
Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIVinícius Thiengo
 
Apresentação aula 2 android
Apresentação aula 2 androidApresentação aula 2 android
Apresentação aula 2 androidAlex Braz
 
Persistência com JPA e Hibernate
Persistência com JPA e HibernatePersistência com JPA e Hibernate
Persistência com JPA e HibernateFernando Oliveira
 

Ähnlich wie Android Activities Intents (20)

Introdução a programação em Android
Introdução a programação em AndroidIntrodução a programação em Android
Introdução a programação em Android
 
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdfAula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
 
Curso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesCurso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos Chaves
 
Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)Introdução ao Android (minicurso 4h)
Introdução ao Android (minicurso 4h)
 
Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5Desenvolvimento de Apps e Games para Android - Parte 5
Desenvolvimento de Apps e Games para Android - Parte 5
 
Seminário sd android_exemplos
Seminário sd android_exemplosSeminário sd android_exemplos
Seminário sd android_exemplos
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
 
Banco de Dados - Android
Banco de Dados - AndroidBanco de Dados - Android
Banco de Dados - Android
 
Cap9
Cap9Cap9
Cap9
 
Android Para Iniciantes
Android Para IniciantesAndroid Para Iniciantes
Android Para Iniciantes
 
Android na Prática
Android na PráticaAndroid na Prática
Android na Prática
 
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IVBackbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
 
Desenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App EngineDesenvolvimento de aplicações para o Google App Engine
Desenvolvimento de aplicações para o Google App Engine
 
Fragmentos
FragmentosFragmentos
Fragmentos
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
Como Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State APIComo Reter Objetos Utilizando Android-State API
Como Reter Objetos Utilizando Android-State API
 
Apresentação aula 2 android
Apresentação aula 2 androidApresentação aula 2 android
Apresentação aula 2 android
 
Persistência com JPA e Hibernate
Persistência com JPA e HibernatePersistência com JPA e Hibernate
Persistência com JPA e Hibernate
 

Mehr von Natanael Fonseca

Microservices With Istio Service Mesh
Microservices With Istio Service MeshMicroservices With Istio Service Mesh
Microservices With Istio Service MeshNatanael Fonseca
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixNatanael Fonseca
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Natanael Fonseca
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Natanael Fonseca
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Natanael Fonseca
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02Natanael Fonseca
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Natanael Fonseca
 
Desafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidDesafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidNatanael Fonseca
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma AndroidNatanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509Natanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509Natanael Fonseca
 
Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)Natanael Fonseca
 
Introdução a criptografia
Introdução a criptografiaIntrodução a criptografia
Introdução a criptografiaNatanael Fonseca
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring FrameworkNatanael Fonseca
 
Validação de certificados digitais
Validação de certificados digitaisValidação de certificados digitais
Validação de certificados digitaisNatanael Fonseca
 

Mehr von Natanael Fonseca (18)

Microservices With Istio Service Mesh
Microservices With Istio Service MeshMicroservices With Istio Service Mesh
Microservices With Istio Service Mesh
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
 
Aula05
Aula05Aula05
Aula05
 
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
 
Desafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma AndroidDesafios de projeto para quem usa a plataforma Android
Desafios de projeto para quem usa a plataforma Android
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
 
Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)Infra Estrutura de Chaves Publicas(PKI)
Infra Estrutura de Chaves Publicas(PKI)
 
Introdução a criptografia
Introdução a criptografiaIntrodução a criptografia
Introdução a criptografia
 
Transações em EJB
Transações em EJBTransações em EJB
Transações em EJB
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Java annotation
Java annotationJava annotation
Java annotation
 
Validação de certificados digitais
Validação de certificados digitaisValidação de certificados digitais
Validação de certificados digitais
 

Android Activities Intents

  • 2. Activities e Intents Natanael Fonseca Arquiteto de Software Site Pessoal: www.natanaelfonseca.com.br
  • 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. 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. Ciclo de Vida de uma Activity onCreate() — Chamado quando a atividade é criada ela primeira vez; onStart() — Chamado quando a atividade se torna visível para o usuário; onResume() — Chamado quando a atividade inicia a iteração com o usuário; onPause() — Chamado quando a atividade corrente está sendo pausada e uma outra atividade está sendo resumida(Resumed); onStop() — Chamado quando a atividade não está mais visível para o usuário; onDestroy() — Chamado antes da atividade ser destruida pelo sistema(Ou manualmente ou pelo sistema para economizar memória) onRestart() — Chamado quando a atividade foi parada(Stopped) e restartada novamente;
  • 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. 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. 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. 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. Exemplo Perceba 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 bundle nulo, possivelmente houve um } evento de mudança de } @Override configuraçã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. Recuperando a Activity mas Pensando no usuário. Algumas vezes podemos encontrar situações em que reiniciar a aplicação e recuperar uma porção de informação pode ser algo custoso, nesse caso podemos 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. Mantendo um Objeto durante uma mudança de configuração Para reter um objeto durante uma mudança de configuraçã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. Tratando você mesmo a mudança de Configuração Isso 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 ultimo estágio, e ela não é recomendada para a maioria das aplicações.
  • 14. Exemplo  Alterar o exemplo abaixo para fazer uso do método: getLastNonConfigurationInstance() Ex: Aula02_ConfigChange.zip Tratar os eventos: • LandScape • Portrait
  • 15. Tratando você mesmo a mudança de Configuração Para declarar que você vai tratar as mudanças de configuração basta 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. Exemplo  Alterar o exemplo abaixo para fazer uso de Android:ConfigChanges. Ex: Aula02_ConfigChange.zip Tratar os eventos: • LandScape • Portrait
  • 17. Aplicando Temas No arquivo AndroidManifest.xml você coloca o tema:
  • 18. Aplicando Estilos No arquivo AndroidManifest.xml você declara o estilo : Dentro da pasta values, basta criar o arquivo style.xml com o conteúdo :
  • 19. Activity como Dialogo È possivel fazer com que uma activity se pareça com um dialog, apenas trocando o estilo no Arquivo Android AndroidManifest.xml. Ex: Aula02_ActivityAsDialog.zip Trecho relevante : <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@android:style/Theme.Dialog" >
  • 20. Dialogos  Pequena janela que pede do usuario alguma decisão ou pede a ele alguma informação Adicional.
  • 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. 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. Estrutura fundamental de um Intent No 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 de dados, essas inforações são expressas através de uma URI. Alguns exemplos de pares action/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/N Consultar a pagina do google sobre intent.
  • 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. 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. 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. 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. 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. 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 segunda forma ainda mais persistente e elegante é o sistema de notificações do android fornecido pela classe NotificationManager.
  • 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. 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. Referencias  Beginning Android™ Application Development, Wei-Meng Lee, Wiley 2011.  Android Training : http://developer.android.com/training/index.html.