BroadcastReceiver no Android: Guia Completo
Com as restrições introduzidas no Android O para broadcasts como PHONE_STATE, o futuro dos BroadcastReceivers envolve maior uso de JobScheduler e WorkManager para tarefas em background. Essas APIs fornecem mais controle e eficiência energética.
Futuro e Tendências
Com as restrições introduzidas no Android O para broadcasts como PHONE_STATE, o futuro dos BroadcastReceivers envolve maior uso de JobScheduler e WorkManager para tarefas em background. Essas APIs fornecem mais controle e eficiência energética.
Casos de Uso
BroadcastReceivers são amplamente utilizados em cenários como monitoramento de estado de rede, recebimento de notificações de alarme configuradas com AlarmManager, atualização de widgets e resposta a alterações no estado do telefone como mudanças no volume ou estado da bateria.
Comparações
Comparado a outros mecanismos de callback, como Services e IntentServices, o BroadcastReceiver é mais leve e eficiente para tarefas rápidas que não exigem uma longa execução em background. No entanto, ele não é adequado para operações que necessitam de longa duração ou interação com o usuário.
Fundamentos
Um BroadcastReceiver é uma componente do Android que permite aos aplicativos reagir a ações (ou intents) enviadas pelo sistema ou por outros aplicativos. Ele pode ser usado para iniciar uma atividade, iniciar um serviço ou disparar uma notificação em resposta a eventos como conexão de rede ou alterações no estado do carregamento. A configuração correta de permissões e a declaração no arquivo AndroidManifest.xml são essenciais para o funcionamento adequado.
Introdução
O BroadcastReceiver é uma parte fundamental do ecossistema Android, permitindo que aplicativos respondam a eventos globais do sistema ou de outros aplicativos. Com mais de 853 perguntas na comunidade Stack Overflow, fica evidente que BroadcastReceivers são uma área onde muitos desenvolvedores enfrentam desafios. Este artigo visa fornecer um guia completo, desde os conceitos básicos até as melhores práticas e tendências futuras.
Boas Práticas
Evite operações demoradas no método onReceive(), pois ele é executado na thread principal. Use AlarmManager com cautela e sempre teste seu BroadcastReceiver após reiniciar o dispositivo. Além disso, certifique-se de declarar corretamente as permissões necessárias para evitar erros como "Exported receiver does not require permission".
Implementação
Para implementar um BroadcastReceiver, você deve estender a classe BroadcastReceiver e sobrescrever o método onReceive(). Este método é chamado quando o BroadcastReceiver é iniciado. Exemplo:
java public class ConnectivityReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) { // Handle connectivity change } } } Exemplos de código em android broadcastreceiver
// Exemplo funcional completo
public class ConnectivityReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ConnectivityManager.CONNECTIVITY_ACTION)) {
// Handle connectivity change
}
}
}❓ Perguntas Frequentes
"Exported receiver does not require permission" em receptores destinados a receber serviços do sistema?
Broadcast Receiver Não Funciona Após Reinício do Dispositivo em Android?
Utilize um serviço iniciado por BOOT_COMPLETED para re-registrar seu BroadcastReceiver após o reinício.
CONNECTIVITY_ACTION intent recebido duas vezes quando Wi-Fi conectado?
Verifique se você está filtrando corretamente as ações no seu BroadcastReceiver.
Fatal Exception: android.app.RemoteServiceException: não pode entregar broadcast na thread principal?
Mova operações demoradas para uma thread separada usando AsyncTask ou Handler.
Android O: Limitação na broadcast PHONE_STATE?
Use JobScheduler ou WorkManager para tarefas dependentes do estado do telefone.
Referências
- [1]Documentação Oficial
Referência completa da classe BroadcastReceiver
- [2]GitHub Repository
Exemplos práticos de uso
- [3]Tutorial Avançado
Guia passo-a-passo detalhado
📂 Termos relacionados
Este termo foi útil para você?