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

PDF
Android: Intent, Broadcast Receiver e Notifications
Gustavo Henrique Rodrigues Pinto Tomas
 
PPTX
Aula02 android hands_on
Roberson Alves
 
PPTX
Aula04 android intents
Roberson Alves
 
PPT
Introdução à programação para Android
Jorge Cardoso
 
PDF
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Felipe Silveira
 
PDF
Curso de Android Aula 4
Jose Berardo
 
PDF
Android Aula 3
Erisvaldo Junior
 
PPTX
Plataforma Android
Leonardo Sousa
 
Android: Intent, Broadcast Receiver e Notifications
Gustavo Henrique Rodrigues Pinto Tomas
 
Aula02 android hands_on
Roberson Alves
 
Aula04 android intents
Roberson Alves
 
Introdução à programação para Android
Jorge Cardoso
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Felipe Silveira
 
Curso de Android Aula 4
Jose Berardo
 
Android Aula 3
Erisvaldo Junior
 
Plataforma Android
Leonardo Sousa
 

Mais procurados (20)

PDF
Android Aula 5
Erisvaldo Junior
 
PDF
Android Aula 4
Erisvaldo Junior
 
PDF
Android - Conceito e Arquitetura
Ana Dolores Lima Dias
 
PDF
Introdução ao Desenvolvimento Android
José Alexandre Macedo
 
PDF
Google android pdf
Leonardo Rossetto
 
PDF
Introdução ao android e plataforma android
Juarez Junior
 
PPTX
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Matheus Calegaro
 
PDF
Android Aula 2
Erisvaldo Junior
 
PDF
Android
Everson Wolf
 
PDF
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Tchelinux
 
PDF
Minicurso Android Ronildo Oliveira
Ronildo Oliveira
 
PDF
Introdução ao Android Studio
Ramon Ribeiro Rabello
 
PPTX
Computação Móvel 2012.2 - Android
Tiago Bencardino
 
PDF
Tutorial - Como criar sua primeira app para Android
Sidney Roberto
 
PPTX
Introdução ao Android
Bruno Lui
 
PDF
SESTINFO 2011 Apresentacao Android
Rafael Sakurai
 
PDF
Apostila passo a passo como programar em android edição03
Horacio Diamante Mondlane
 
PDF
Curso de Android - aula 2
Jose Berardo
 
PDF
Curso de Android - aula 3
Jose Berardo
 
PPTX
Programação Android - Básico
HugoDalevedove
 
Android Aula 5
Erisvaldo Junior
 
Android Aula 4
Erisvaldo Junior
 
Android - Conceito e Arquitetura
Ana Dolores Lima Dias
 
Introdução ao Desenvolvimento Android
José Alexandre Macedo
 
Google android pdf
Leonardo Rossetto
 
Introdução ao android e plataforma android
Juarez Junior
 
Introdução ao desenvolvimento de apps para Android - Dia 2/2
Matheus Calegaro
 
Android Aula 2
Erisvaldo Junior
 
Android
Everson Wolf
 
Desenvolvendo aplicações em Java para o Google Android - Ranieri de Souza Fer...
Tchelinux
 
Minicurso Android Ronildo Oliveira
Ronildo Oliveira
 
Introdução ao Android Studio
Ramon Ribeiro Rabello
 
Computação Móvel 2012.2 - Android
Tiago Bencardino
 
Tutorial - Como criar sua primeira app para Android
Sidney Roberto
 
Introdução ao Android
Bruno Lui
 
SESTINFO 2011 Apresentacao Android
Rafael Sakurai
 
Apostila passo a passo como programar em android edição03
Horacio Diamante Mondlane
 
Curso de Android - aula 2
Jose Berardo
 
Curso de Android - aula 3
Jose Berardo
 
Programação Android - Básico
HugoDalevedove
 
Anúncio

Destaque (20)

PPTX
Aula 02 - Android. Intent, Intent Filters
Arthur Emanuel
 
PPTX
Android - Criando um Adapter personalizado para uma Agenda de Contatos
ETEC Monsenhor Antonio Magliano
 
PDF
Aula 2 conjuntose combinatória
wab030
 
PPSX
Aula 17 04 (Exercícios e ScrollView)
Ricardo Longa
 
PPSX
Aula 05/06 (Notification)
Ricardo Longa
 
PDF
Pomodoro agil
Renato
 
PPTX
Android na prática - USCS
Renato
 
PDF
Introduction Android - C.E.S.A.R
Renato
 
PPSX
Aula 10 04 (Gerenciadores de layouts)
Ricardo Longa
 
PPSX
Aula 10 04 (intents)
Ricardo Longa
 
PPSX
Aula 12/06 (SQLite)
Ricardo Longa
 
PPT
Android Palestra
Renato
 
PPTX
android_overview
Renato
 
PPSX
Aula 05/06 (Service)
Ricardo Longa
 
PPSX
Aula 5 - 24/04 (Landscape / Portrait)
Ricardo Longa
 
PPSX
Aula 22/05 (Handler)
Ricardo Longa
 
PPTX
Treze ferramentas/frameworks para desenvolvimento android
Ricardo Longa
 
PPSX
Aula 6 - 08/05 (SharedPreferences)
Ricardo Longa
 
PPTX
Oficina Sesc Android - V1
Odair Bonin Borges
 
PDF
K19 k41 Desenvolvimento Mobile com Android
Aline Diniz
 
Aula 02 - Android. Intent, Intent Filters
Arthur Emanuel
 
Android - Criando um Adapter personalizado para uma Agenda de Contatos
ETEC Monsenhor Antonio Magliano
 
Aula 2 conjuntose combinatória
wab030
 
Aula 17 04 (Exercícios e ScrollView)
Ricardo Longa
 
Aula 05/06 (Notification)
Ricardo Longa
 
Pomodoro agil
Renato
 
Android na prática - USCS
Renato
 
Introduction Android - C.E.S.A.R
Renato
 
Aula 10 04 (Gerenciadores de layouts)
Ricardo Longa
 
Aula 10 04 (intents)
Ricardo Longa
 
Aula 12/06 (SQLite)
Ricardo Longa
 
Android Palestra
Renato
 
android_overview
Renato
 
Aula 05/06 (Service)
Ricardo Longa
 
Aula 5 - 24/04 (Landscape / Portrait)
Ricardo Longa
 
Aula 22/05 (Handler)
Ricardo Longa
 
Treze ferramentas/frameworks para desenvolvimento android
Ricardo Longa
 
Aula 6 - 08/05 (SharedPreferences)
Ricardo Longa
 
Oficina Sesc Android - V1
Odair Bonin Borges
 
K19 k41 Desenvolvimento Mobile com Android
Aline Diniz
 
Anúncio

Semelhante a Atividades e Intenções (Android) (20)

PDF
Introdução a programação em Android
Pedro Veloso
 
PDF
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
nosbisantos
 
PDF
Curso Android - 03 Conceitos Chaves
Ronildo Oliveira
 
PDF
Introdução ao Android (minicurso 4h)
Rodrigo Rocha
 
PDF
Desenvolvimento de Apps e Games para Android - Parte 5
Erisvaldo Junior
 
PDF
Seminário sd android_exemplos
Calvin Rodrigues
 
PPT
Aula javascript
Gabriel Moura
 
PPTX
Android Para Iniciantes
Rodolfo Gonçalves de Luna Freire
 
PDF
Android na Prática
Ramon Ribeiro Rabello
 
PDF
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
João Helis Bernardo
 
PDF
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Carlos Duarte do Nascimento
 
PDF
Desenvolvimento de aplicações para o Google App Engine
Campus Party Brasil
 
PPTX
Fragmentos
Natanael Fonseca
 
PDF
Apostila ph pwamp_parte5
Ilton Barbosa
 
PDF
Como conectar programas em linguagem java a bases de dados
Henrique Fernandes
 
PDF
Como Reter Objetos Utilizando Android-State API
Vinícius Thiengo
 
PPTX
Apresentação aula 2 android
Alex Braz
 
PPTX
Persistência com JPA e Hibernate
Fernando Oliveira
 
Introdução a programação em Android
Pedro Veloso
 
Aula 15 e 16 - Navegação - Activities e Fragments.pptx.pdf
nosbisantos
 
Curso Android - 03 Conceitos Chaves
Ronildo Oliveira
 
Introdução ao Android (minicurso 4h)
Rodrigo Rocha
 
Desenvolvimento de Apps e Games para Android - Parte 5
Erisvaldo Junior
 
Seminário sd android_exemplos
Calvin Rodrigues
 
Aula javascript
Gabriel Moura
 
Android Para Iniciantes
Rodolfo Gonçalves de Luna Freire
 
Android na Prática
Ramon Ribeiro Rabello
 
Backbone.js - Desenvolvimento de Sistemas Corporativos - UFPB - Campus IV
João Helis Bernardo
 
Desenvolvimento de Aplicações para o Google App Engine (CPBR5)
Carlos Duarte do Nascimento
 
Desenvolvimento de aplicações para o Google App Engine
Campus Party Brasil
 
Fragmentos
Natanael Fonseca
 
Apostila ph pwamp_parte5
Ilton Barbosa
 
Como conectar programas em linguagem java a bases de dados
Henrique Fernandes
 
Como Reter Objetos Utilizando Android-State API
Vinícius Thiengo
 
Apresentação aula 2 android
Alex Braz
 
Persistência com JPA e Hibernate
Fernando Oliveira
 

Mais de Natanael Fonseca (18)

PPTX
Microservices With Istio Service Mesh
Natanael Fonseca
 
PPTX
Microservices com Spring Boot e Spring Cloud Netflix
Natanael Fonseca
 
PPTX
Curso Java Básico - Aula 05
Natanael Fonseca
 
PPTX
Aula05
Natanael Fonseca
 
PPTX
Curso Java Básico - Aula 04
Natanael Fonseca
 
PPTX
Curso Java Básico - Aula 03
Natanael Fonseca
 
PPTX
Curso Java Básico - Aula02
Natanael Fonseca
 
PPTX
Curso Java Básico - Aula 01
Natanael Fonseca
 
PPTX
Desafios de projeto para quem usa a plataforma Android
Natanael Fonseca
 
PPTX
Introdução à plataforma Android
Natanael Fonseca
 
PPTX
Certificados Digitais x509
Natanael Fonseca
 
PPTX
Certificados Digitais x509
Natanael Fonseca
 
PPTX
Infra Estrutura de Chaves Publicas(PKI)
Natanael Fonseca
 
PPTX
Introdução a criptografia
Natanael Fonseca
 
PPT
Transações em EJB
Natanael Fonseca
 
KEY
Introdução ao Spring Framework
Natanael Fonseca
 
PPTX
Java annotation
Natanael Fonseca
 
PPT
Validação de certificados digitais
Natanael Fonseca
 
Microservices With Istio Service Mesh
Natanael Fonseca
 
Microservices com Spring Boot e Spring Cloud Netflix
Natanael Fonseca
 
Curso Java Básico - Aula 05
Natanael Fonseca
 
Curso Java Básico - Aula 04
Natanael Fonseca
 
Curso Java Básico - Aula 03
Natanael Fonseca
 
Curso Java Básico - Aula02
Natanael Fonseca
 
Curso Java Básico - Aula 01
Natanael Fonseca
 
Desafios de projeto para quem usa a plataforma Android
Natanael Fonseca
 
Introdução à plataforma Android
Natanael Fonseca
 
Certificados Digitais x509
Natanael Fonseca
 
Certificados Digitais x509
Natanael Fonseca
 
Infra Estrutura de Chaves Publicas(PKI)
Natanael Fonseca
 
Introdução a criptografia
Natanael Fonseca
 
Transações em EJB
Natanael Fonseca
 
Introdução ao Spring Framework
Natanael Fonseca
 
Java annotation
Natanael Fonseca
 
Validação de certificados digitais
Natanael Fonseca
 

Último (16)

PPTX
Curso de Java 5 - (Strings) Tipo de Dados.pptx
Anderson Maciel
 
PPTX
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
PDF
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
PPTX
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
Anderson Maciel
 
PPTX
Curso de Java 6 - (Números, Data e Hora).pptx
Anderson Maciel
 
PPTX
Curso de Java 4 - (Orientação a Objetos).pptx
Anderson Maciel
 
PPTX
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
Anderson Maciel
 
PPTX
Curso de Java 1 - (Introdução Geral).pptx
Anderson Maciel
 
PPTX
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
PPTX
21 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
PPTX
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
PDF
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
PPTX
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx
Anderson Maciel
 
PPTX
22 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
PPTX
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
PPTX
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 
Curso de Java 5 - (Strings) Tipo de Dados.pptx
Anderson Maciel
 
Gestão de Mudanças - Os maiores desafios da Gestão de Mudanças e Gestão de Pr...
Gateware Group
 
Explorando o Futuro do Corpo: Implantes Neurais e o Biohacking dos Sentidos
cooperliora
 
Curso de Java 2 - (PrimeiroPrograma, Variáveis, Tipos e Operadores.pptx
Anderson Maciel
 
Curso de Java 6 - (Números, Data e Hora).pptx
Anderson Maciel
 
Curso de Java 4 - (Orientação a Objetos).pptx
Anderson Maciel
 
Curso de Java 7 - (ArrayList, Collections,(Set, List, Queue, Map)).pptx
Anderson Maciel
 
Curso de Java 1 - (Introdução Geral).pptx
Anderson Maciel
 
Gestão de Mudanças - Fases do processo de mudança organizacional
Gateware Group
 
21 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
aplicativopenseira.pptx Aplicativo que organiza Pensamentos - Peça Publicitária
StelaNorie1
 
Certificado em Redes Neurais Artificiais em Python
CaioSilva506151
 
Curso de Java 3 - (Estruturas de Controle, Decisão, Loop, Procedimento).pptx
Anderson Maciel
 
22 - Lógica de Programação com Portugol.pptx
Anderson Maciel
 
Desenvolvimento-de-Produtos-Inovadores.pptx
ssuser1d7565
 
Computacao-e-Tecnologias-Digitais-Por-Que-Aprender.pptx
RobertaOliveiradaFon1
 

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.