Junior — Middle
Jak można zwiększyć czas działania BroadcastReceiver w Android?
sobes.tech AI
Odpowiedź od AI
BroadcastReceiver w Android domyślnie działa bardzo krótko — dopóki wykonywana jest metoda onReceive(). Aby wydłużyć czas działania, można:
- Uruchomić usługę w tle (Service) z onReceive(), która będzie wykonywać długotrwałe operacje.
- Używać goAsync() wewnątrz onReceive(), aby uzyskać PendingResult i zakończyć obsługę później, wywołując finish() po zakończeniu.
Przykład z goAsync():
public void onReceive(Context context, Intent intent) {
final PendingResult pendingResult = goAsync();
new Thread(() -> {
// Długa operacja
// ...
pendingResult.finish();
}).start();
}
W ten sposób można uniknąć ograniczenia czasowego w onReceive() i wykonywać zadania dłużej.