Junior — Middle
Jak prodloužit dobu běhu BroadcastReceiver v Androidu?
sobes.tech AI
Odpověď od AI
BroadcastReceiver v Androidu ve výchozím nastavení funguje velmi krátce — dokud je spuštěna metoda onReceive(). Pro prodloužení doby můžete:
- Spustit z onReceive() službu na pozadí (Service), která bude provádět dlouhotrvající operace.
- Použít goAsync() uvnitř onReceive() k získání PendingResult a dokončení zpracování později, voláním finish() po dokončení.
Příklad s goAsync():
public void onReceive(Context context, Intent intent) {
final PendingResult pendingResult = goAsync();
new Thread(() -> {
// Dlouhá operace
// ...
pendingResult.finish();
}).start();
}
Tímto způsobem lze zabránit časovému omezení v onReceive() a provádět úkoly déle.