Sobes.tech
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.