</lingo>

BroadcastReceiver no Android: Guia Completo

technical
Avançado

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 } } } 
Lembre-se de registrar este receptor no AndroidManifest.xml.

Exemplos de código em android broadcastreceiver

Java
// 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
    }
}
}
**Conectividade:** Detecta mudanças no estado da rede

❓ 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

📂 Termos relacionados

Este termo foi útil para você?