Três dos principais componentes de uma aplicação - atividades, serviços e broadcast receivers - são ativados através de mensagens, chamadas intents. Mensagens intent são um facilitador para rodar bindings entre componentes da mesma ou de diferentes aplicações. O intent, um objeto Intent, é uma estrutura de dados passiva que comporta uma descrição abstrata da operação a ser realizada -ou, nos casos de broadcasts, uma descrição de algo que aconteceu e que é anunciado. Existem mecanismos separados para entregar intents para cada tipo de componente:
- Um objeto intent é passado para Context.startActivity() ou Activity.startActivityForResult() para lançar uma atividade ou receber uma atividade existente para fazer algo novo (ele pode também ser passado por Activity.setResult() para retornar informações para a atividade que chamou o startActivityForResult().
- Um objeto Intent é passado para Context.startService() para iniciar um serviço ou entregar novas instruções para um serviço de saída. Similarmente, um intent pode ser passado para Context.bindService() para estabelecer uma conexão entre o componente que chama e o serviço alvo. Ele pode opcionalmente iniciar o serviço se ele já não estiver rodando.
- Objetos intent passados para qualquer método broadcast (como Context.sendBroadcast(), Context.sendOrderedBroadcast() ou Context.sendStickyBroadcast()) são entregues para todos os broadcast receivers interessados. Muitos tipos de broadcasts originam-se em código de sistema.
Em cada caso, o sistema Android encontra a atividade apropriada, serviço ou broadcast receiver para responder ao intent, instanciando-os se necessário. Não existe problema nessas mensagens de sistema: broadcast intents são entregues apenas para broadcast receivers, nunca para atividades ou serviços. Um intent passado para startActivity() é entregue apenas para uma atividade, nunca para um serviço ou broadcast receiver e assim por diante.
Objetos Intent
Um objeto intent é um conjunto de informações. Ele contém informações de interesse para o componente que o recebe (como uma ação a ser tomada e os dados de argumento) mais informações de interesse para o sistema Android (como qual categoria de componente deve manusear o intent e instruções em como lançar a atividade alvo). Mas, ele deve conter principalmente:
Nome de Componente
O nome do componente que deve manusear o intent. Esse campo é o objeto ComponentName - uma combinação de um nome completamente qualificado do componente alvo e o nome do pacote setado no arquivo de manifesto da aplicação onde o componente reside.
O nome de componente é opcional. Se ele é configurado, o objeto de Intent é entregue para uma instância da classe designada. Se ele não é configurado, o Android usa outra informação do objeto Intent para localizar um alvo que possa recebê-lo.
O nome do componente pode ser configurado por setComponent(), setClass(), setClassName() e lido por getComponent().
Ação
Uma string nomeando a ação a ser realizada -ou, no caso de broadcast intents, a ação que está sendo executada e reportada. A classe intent define um número de constantes de ação, incluindo esses:
Nome de Componente
O nome do componente que deve manusear o intent. Esse campo é o objeto ComponentName - uma combinação de um nome completamente qualificado do componente alvo e o nome do pacote setado no arquivo de manifesto da aplicação onde o componente reside.
O nome de componente é opcional. Se ele é configurado, o objeto de Intent é entregue para uma instância da classe designada. Se ele não é configurado, o Android usa outra informação do objeto Intent para localizar um alvo que possa recebê-lo.
O nome do componente pode ser configurado por setComponent(), setClass(), setClassName() e lido por getComponent().
Ação
Uma string nomeando a ação a ser realizada -ou, no caso de broadcast intents, a ação que está sendo executada e reportada. A classe intent define um número de constantes de ação, incluindo esses:
Constant | Target component | Action |
---|---|---|
ACTION_CALL | activity | Inicia uma chamada de telefone |
ACTION_EDIT | activity | Mostra dados para o usuário editar |
ACTION_MAIN | activity | Inicia a atividade que está marcada como inicial em modo vazio e com nenhum retorno |
ACTION_SYNC | activity | Sincroniza dados no servidor a partir do dispositivo móvel |
ACTION_BATTERY_LOW | broadcast receiver | Mostra um aviso que a bateria está baixa |
ACTION_HEADSET_PLUG | broadcast receiver | Mostra que um fone de ouvido foi plugado no dispositivo ou desplugado |
ACTION_SCREEN_ON | broadcast receiver | A tela foi ligada |
ACTION_TIMEZONE_CHANGED | broadcast receiver | As configurações da zona de tempo foi mudada |
A URI dos dados a serem capturados e o MIME type para eles.
Category
Uma string contendo informações adicionados sobre o tipo de componentes que devem ser manuseados pelo intent.
Constant | Meaning |
---|---|
CATEGORY_BROWSABLE | A atividade alvo pode ser chamada de maneira segura pelo navegador para mostrar dados referenciados por um link (imagem ou email, etc) |
CATEGORY_GADGET | A atividade pode ser embarcada dentro de outra atividade que hospede gadgets. |
CATEGORY_HOME | A atividade mostra a tela home, a primeira tela que o usuário vê quando o dispositivo é ligado ou quando a tela HOME é pressionada. |
CATEGORY_LAUNCHER | A atividade pode ser a atividade inicial ou uma tarefa e é listada no tipo da aplicação launcher. |
CATEGORY_PREFERENCE | A atividade alvo é o painel de preferências |
Extras
Pares chave-valor com informações adicionais que devem ser entregues para o componente manuseando um intent.
Flags
Flags de tipos diversos.
0 comentários:
Postar um comentário