Componentes de Aplicação
Autor: Emerson Correia | Publicado: 2012-09-30T14:32:00-03:00



Componentes de aplicação são os blocos de construção essenciais para uma aplicação Android. Cada componente é um ponto diferente pelo qual o sistema pode&nbsp;interagir&nbsp;com sua aplicação. Nem todos os componentes são pontos de entrada para o usuário e alguns dependem de outros, mas cada um existe com sua própria identidade e regras únicas que ajudam a definir o comportamento geral da sua aplicação.


Há quatro tipos diferentes de componentes de aplicação. Cada tipo serve a um propósito distinto e tem um ciclo de vida distinto que define como o componente é criado e&nbsp;destruído.

Aqui estão os quatro tipos de componentes de aplicação:


Activity


Uma atividade (activity) representa uma tela com uma interface de usuário. Por exemplo, uma aplicação de email deve ter uma activity que exibe a lista de novos emails, outra activity para escrever um email, e outra activity para ler os emails. Embora as acitivities trabalhem juntas para formar uma experiencia de usuário coesa na aplicação de email, cada uma é independente das outras. Assim, uma aplicação diferente pode iniciar qualquer um dessas activities (se a aplicação de email permitir). Por exemplo, uma aplicação de camera pode iniciar a activity que escreve um novo email na aplicação de email, afim de permitir que o usuário compartilhe uma foto.

Uma activity é implementada como uma subclasse de Activity.


Service


Um serviço (service) é um componente que roda em segundo plano realizando operações que levam muito tempo de execução ou relizando trabalho para processos remotos. Um service não fornece uma interface de usuário. Por exemplo, um serviço deve tocar musica em plano de fundo enquanto o usuário está em uma aplicação diferente, ou ele deve pegar dados da rede sem bloquear a interação do usuário com uma activity. Outro componente, como uma activity, pode iniciar o serviço e deixá-lo rodando ou anexá-lo para poder iteragir com ele.

Um serviço é implementado como uma subclasse de Service.


Content providers


Um content provider gerencia um conjunto de dados da aplicação que é compartilhado. Você pode armazenar os dados no sistema de arquivos, em um banco de dados SQLite, na web, ou outra forma de armazenamento persistente que sua aplicação possa acessar. Através do content provider, outras aplicações podem consultar ou até mesmo modificar os dados (se o content provider permitir). Por exemplo, o sistema Android fornece um content provider que gerencia as informações de contato do usuário. Assim, qualquer aplicação com as permissões apropriadas podem consultar parte do content provider (como um ContactsContract.Data) para ler e escrever informação sobre uma pessoa em particular.



Content providers são também úteis para leitura e escrita de dados que são particulares a sua aplicação e não compartilhados. Por exemplo, a aplicação de exemplo Note Pad usa um content provider para salvar notas.



Um content provider é implementado como uma subclasse de content provider e deve implemenentar um conjunto padrão de APIs que habilitam outras aplicação a realizarem transações.


Broadcast receivers


Um broadcast receiver é um componente que responde a&nbsp;anúncios&nbsp;disparados a todo o sistema. Muitos breadcast são originados pelo sistema - por exemplo, um broadcast anunciando que a tela ficou escura, a bateria está baixa, ou uma foto foi capturada. as Aplicações podem também iniciar broadcast - por exemplo, para permitir que outras aplicações saibam que algum dado foi baixado para o dispositivo e está disponível para elas o usarem. Embora broadcast receivers não exibam uma interface de usuário, elas podem criar uma notificação na status bar par avisar o usuário que algum evento broadcast ocorreu. O mais comum, entretanto, é um broadcast receiver atuar como um gateway entre outros componentes e realizar uma mínima quantidade de trabalho. Ele deve iniciar um serviço para realizar algum trabalho baseado no evento.



Um broadcast receiver é implementado como uma subclasse de BradcastReceiver e cada broadcast é entregue como um objeto Intent.



Um aspecto único do projeto do sistema Android é que qualquer aplicação pode iniciar componentes de outras aplicações. Por exemplo, se você quer que o usuário capture uma foto com o dispositivo camera, provavelmente há outra aplicação que faz isso e sua aplicação pode usá-la, ao invés de desenvolver uma activity para capturar uma foto por conta própria. Você não precisa incorporá-la, nem sequer linká-la com o código da aplicação de&nbsp;câmera&nbsp; Ao invés disso, você pode simplesmente iniciar a activity na aplicação de&nbsp;câmera&nbsp;que captura uma foto. Quanto completar, a foto é retornada para sua aplicação e você pode usá-la. Para o usuário é como se a&nbsp;câmera&nbsp;fosse parte da sua aplicação.