Junior — Middle
Ako predĺžiť dobu prevádzky BroadcastReceiver v Android?
sobes.tech AI
Odpoveď od AI
BroadcastReceiver v Androidu predvolene funguje veľmi krátko — dokým sa ne vykoná metóda onReceive(). Aby ste predĺžili dobu, môžete:
- Spustiť na pozadí službu (Service) z onReceive(), ktorá bude vykonávať dlhé operácie.
- Použiť goAsync() vo vnútri onReceive() na získanie PendingResult a dokončenie spracovania neskôr, volaním finish() po ukončení.
Príklad s goAsync():
public void onReceive(Context context, Intent intent) {
final PendingResult pendingResult = goAsync();
new Thread(() -> {
// Dlhá operácia
// ...
pendingResult.finish();
}).start();
}
Týmto spôsobom je možné vyhnúť sa časovému obmedzeniu v onReceive() a vykonávať úlohy dlhšie.