Sobes.tech
Junior — Middle

Hogyan lehet növelni a BroadcastReceiver működési idejét Androidon?

sobes.tech MI

Válasz az MI-től

Androidon a BroadcastReceiver alapértelmezés szerint nagyon rövid ideig működik — amíg az onReceive() metódus fut. A futási idő növeléséhez:

  • Indíthatunk háttérszolgáltatást (Service) az onReceive()-ből, amely hosszú műveleteket végez.
  • Használhatjuk a goAsync() metódust az onReceive() belsejében, hogy PendingResult-et kapjunk, és később fejezzük be a feldolgozást a finish() hívásával.

Példa a goAsync() használatával:

public void onReceive(Context context, Intent intent) {
    final PendingResult pendingResult = goAsync();
    new Thread(() -> {
        // Hosszú művelet
        // ...
        pendingResult.finish();
    }).start();
}

Így elkerülhető az onReceive() időkorlátja, és hosszabb feladatokat lehet végrehajtani.