Sobes.tech
Junior — Middle

Como é que se pode aumentar a duração de funcionamento do BroadcastReceiver no Android?

sobes.tech IA

Resposta da IA

O BroadcastReceiver no Android por padrão funciona por um período muito curto — enquanto o método onReceive() está em execução. Para aumentar a duração, pode-se:

  • Iniciar um serviço em segundo plano (Service) a partir do onReceive(), que realizará operações prolongadas.
  • Usar goAsync() dentro do onReceive() para obter um PendingResult e concluir o processamento mais tarde, chamando finish() após a conclusão.

Exemplo com goAsync():

public void onReceive(Context context, Intent intent) {
    final PendingResult pendingResult = goAsync();
    new Thread(() -> {
        // Operação longa
        // ...
        pendingResult.finish();
    }).start();
}

Dessa forma, é possível evitar a limitação de tempo no onReceive() e realizar tarefas por mais tempo.