terça-feira, 22 de março de 2011

Introdução ao desenvolvimento para Android - Ativando Componentes

Os content providers são ativados quando se tornam alvos de uma requisição de um ContentResolver. Os outros três componentes —atividades , serviços, e broadcast receivers — são ativados por mensagens assíncronas chamadas intentos. Um intento é um objeto Intent que carrega o conteúdo da mensagem. Para atividades e serviços, ele indica a ação solicitada e especifica a URI dos dados sobre os quais atuar, dentre outras coisas. Por exemplo, ele pode transmitir um pedido para uma atividade para mostrar uma imagem ao usuário ou permitir que o usuário edite algum texto. Para broadcast receivers, o objeto Intent indica a ação anunciada. Por exemplo, ele pode anunciar às partes interessadas que o botão da câmera foi pressionado.

Existem métodos distintos para ativar cada tipo de componente:
  • Uma atividade é lançada (ou recebe alguma coisa pra fazer) passando-se um objeto Intent para Context.startActivity() (inicia uma atividade da qual não se espera retorno) ou Activity.startActivityForResult()(usado quando se espera um resultado de volta da atividade que ela está iniciando). Uma atividade frequentemente inicia uma próxima. A atividade responsável pode analizar o intento inicial que a fez ser lançada chamando seu método getIntent().   O Android chama o método onNewIntent() da atividade para passar quaisquer intentos subsequentes.
O método startActivityForResult() é usado por exemplo, para iniciar uma atividade que permite ao usuário selecionar uma foto, ela deve espera que seja retornada a foto escolhida. O resultado é retornado em um objeto Intent que é passado para o método onActivityResult() da atividade requerente.
  • Um serviço é iniciado (ou novas instruções são dadas para o serviço em execução) passando-se um objeto Intent para Context.startService(). O Android chama o método onStart() do serviço passando-lhe o objeto Intent.
Da mesma forma, um intento pode ser passado para Context.bindService() para estabelecer uma conexão em execução entre o componente requerente e o serviço-alvo. O serviço recebe o objeto Intent através de uma chamada a onBind(). (Se o serviço não estiver rodando, bindService() pode opcionalmente iniciá-lo.) Por exemplo, uma atividade poderia estabelecer uma conexão com o serviço de playback de música mencionado anteriormente de forma a permitir que o usuário controlasse (através de uma interface de usuário) o playback. A atividade chamaria bindService() para preparar a conexão, e então chamaria métodos definidos pelo serviço para afetar o playback.
A seção Remote procedure calls, fornece mais detalhes sobre ligação (binding) a um serviço.
Para saber mais sobre intent messages, veja o artigo à parte, Intents and Intent Filters.

adaptado de http://zendroid.com.br/documentacao/principios-basicos-da-aplicacao-–-parte-2-intentos/
Leandro Santos

Nenhum comentário:

Postar um comentário