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.