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.