SlideShare uma empresa Scribd logo
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.

Mais conteúdo relacionado

Mais procurados

Android Aula 5
Android Aula 5Android Aula 5
Android Aula 5
Erisvaldo Junior
 
Android Aula 4
Android Aula 4Android Aula 4
Android Aula 4
Erisvaldo Junior
 
Android - Conceito e Arquitetura
Android - Conceito e ArquiteturaAndroid - Conceito e Arquitetura
Android - Conceito e Arquitetura
Ana Dolores Lima Dias
 
Introdução ao Desenvolvimento Android
Introdução ao Desenvolvimento AndroidIntrodução ao Desenvolvimento Android
Introdução ao Desenvolvimento Android
José Alexandre Macedo
 
Google android pdf
Google android pdfGoogle android pdf
Google android pdf
Leonardo Rossetto
 
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
Juarez 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/2
Matheus Calegaro
 
Android Aula 2
Android Aula 2Android Aula 2
Android Aula 2
Erisvaldo Junior
 
Android
AndroidAndroid
Android
Everson Wolf
 
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 Oliveira
Ronildo Oliveira
 
Introdução ao Android Studio
Introdução ao Android StudioIntrodução ao Android Studio
Introdução ao Android Studio
Ramon Ribeiro Rabello
 
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
Tiago 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 Android
Sidney Roberto
 
Introdução ao Android
Introdução ao AndroidIntrodução ao Android
Introdução ao Android
Bruno Lui
 
SESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao AndroidSESTINFO 2011 Apresentacao Android
SESTINFO 2011 Apresentacao Android
Rafael 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ção03
Horacio Diamante Mondlane
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2
Jose Berardo
 
Curso de Android - aula 3
Curso de Android - aula 3Curso de Android - aula 3
Curso de Android - aula 3
Jose Berardo
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
HugoDalevedove
 

Mais procurados (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
 

Destaque

Aula 02 - Android. Intent, Intent Filters
Aula 02 - Android. Intent, Intent FiltersAula 02 - Android. Intent, Intent Filters
Aula 02 - Android. Intent, Intent Filters
Arthur 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 Contatos
ETEC Monsenhor Antonio Magliano
 
Aula 2 conjuntose combinatória
Aula 2   conjuntose combinatóriaAula 2   conjuntose combinatória
Aula 2 conjuntose combinatória
wab030
 
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 agil
Renato
 
Android na prática - USCS
Android na prática - USCSAndroid na prática - USCS
Android na prática - USCS
Renato
 
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
Renato
 
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
 
Aula 12/06 (SQLite)
Aula 12/06 (SQLite)Aula 12/06 (SQLite)
Aula 12/06 (SQLite)
Ricardo Longa
 
Android Palestra
Android PalestraAndroid Palestra
Android Palestra
Renato
 
android_overview
android_overviewandroid_overview
android_overview
Renato
 
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 android
Ricardo Longa
 
Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)Aula 6 - 08/05 (SharedPreferences)
Aula 6 - 08/05 (SharedPreferences)
Ricardo Longa
 
Oficina Sesc Android - V1
Oficina Sesc Android - V1Oficina Sesc Android - V1
Oficina Sesc Android - V1
Odair Bonin Borges
 
K19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com AndroidK19 k41 Desenvolvimento Mobile com Android
K19 k41 Desenvolvimento Mobile com Android
Aline Diniz
 

Destaque (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
 

Semelhante a Atividades e Intenções (Android)

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
Pedro 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.pdf
nosbisantos
 
Curso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos ChavesCurso Android - 03 Conceitos Chaves
Curso Android - 03 Conceitos Chaves
Ronildo 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 5
Erisvaldo Junior
 
Seminário sd android_exemplos
Seminário sd android_exemplosSeminário sd android_exemplos
Seminário sd android_exemplos
Calvin Rodrigues
 
Aula javascript
Aula  javascriptAula  javascript
Aula javascript
Gabriel Moura
 
Banco de Dados - Android
Banco de Dados - AndroidBanco de Dados - Android
Cap9
Cap9Cap9
Android Para Iniciantes
Android Para IniciantesAndroid Para Iniciantes
Android Para Iniciantes
Rodolfo G.Luna Freire
 
Android na Prática
Android na PráticaAndroid na Prática
Android na Prática
Ramon Ribeiro Rabello
 
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
João Helis Bernardo
 
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
Campus Party Brasil
 
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
 
Fragmentos
FragmentosFragmentos
Fragmentos
Natanael Fonseca
 
Apostila ph pwamp_parte5
Apostila ph pwamp_parte5Apostila ph pwamp_parte5
Apostila ph pwamp_parte5
Ilton 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 dados
Henrique 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 API
Vinícius Thiengo
 
Apresentação aula 2 android
Apresentação aula 2 androidApresentação aula 2 android
Apresentação aula 2 android
Alex Braz
 
Persistência com JPA e Hibernate
Persistência com JPA e HibernatePersistência com JPA e Hibernate
Persistência com JPA e Hibernate
Fernando Oliveira
 

Semelhante a Atividades e Intenções (Android) (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
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
 
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)
 
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
 

Mais de Natanael Fonseca

Microservices With Istio Service Mesh
Microservices With Istio Service MeshMicroservices With Istio Service Mesh
Microservices With Istio Service Mesh
Natanael 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 Netflix
Natanael Fonseca
 
Curso Java Básico - Aula 05
Curso Java Básico - Aula 05Curso Java Básico - Aula 05
Curso Java Básico - Aula 05
Natanael Fonseca
 
Aula05
Aula05Aula05
Curso Java Básico - Aula 04
Curso Java Básico - Aula 04Curso Java Básico - Aula 04
Curso Java Básico - Aula 04
Natanael Fonseca
 
Curso Java Básico - Aula 03
Curso Java Básico - Aula 03Curso Java Básico - Aula 03
Curso Java Básico - Aula 03
Natanael Fonseca
 
Curso Java Básico - Aula02
Curso Java Básico - Aula02Curso Java Básico - Aula02
Curso Java Básico - Aula02
Natanael Fonseca
 
Curso Java Básico - Aula 01
Curso Java Básico - Aula 01Curso Java Básico - Aula 01
Curso Java Básico - Aula 01
Natanael 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 Android
Natanael Fonseca
 
Introdução à plataforma Android
Introdução à plataforma AndroidIntrodução à plataforma Android
Introdução à plataforma Android
Natanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
Natanael Fonseca
 
Certificados Digitais x509
Certificados Digitais x509Certificados Digitais x509
Certificados Digitais x509
Natanael 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 criptografia
Natanael Fonseca
 
Transações em EJB
Transações em EJBTransações em EJB
Transações em EJB
Natanael Fonseca
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
Natanael Fonseca
 
Java annotation
Java annotationJava annotation
Java annotation
Natanael Fonseca
 
Validação de certificados digitais
Validação de certificados digitaisValidação de certificados digitais
Validação de certificados digitais
Natanael Fonseca
 

Mais de 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
 

Atividades e Intenções (Android)

  • 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.