Prečo sa používa PendingIntent namiesto bežného Intentu?
sobes.tech AI
Odpoveď od AI
PendingIntent umožňuje odovzdať úmysel (Intent) inej aplikácii, aby ho mohla vykonať v mene vašej aplikácie v neskoršom čase, a to aj v prípade, že vaša aplikácia bola ukončená.
Hlavné dôvody na použitie PendingIntent:
- Upozornenia: Spustenie aktivity alebo služby pri kliknutí na upozornenie, aj keď aplikácia v tom momente nie je aktívna.
- Widgety na pracovnej ploche: Spustenie akcie v aplikácii pri interakcii s widgetom.
- Budíky a odložené úlohy: Vykonanie kódu aplikácie v určitom čase alebo podľa podmienky pomocou
AlarmManager. - SMS a iní prijímači vysielania: Vykonanie akcie v aplikácii pri prijatí vysielacieho úmyslu.
Obvyklý Intent sa vykoná okamžite a v kontexte vašej aplikácie. PendingIntent je však obal nad Intent, ktorý dáva inej aplikácii povolenie vykonať tento Intent s rovnakými právami, ako keby ho vykonala vaša aplikácia.
Pri vytváraní PendingIntent musíte vybrať typ komponentu, ktorý bude spustený: aktivita (getActivity), služba (getService) alebo vysielač (getBroadcast). Taktiež sú uvedené vlajky, ktoré určujú správanie PendingIntent, napríklad, ako zaobchádzať s existujúcimi intentami (FLAG_UPDATE_CURRENT, FLAG_CANCEL_CURRENT).
Príklad vytvorenia PendingIntent na spustenie aktivity:
// Vytvoríme úmysel na spustenie MainActivity
Intent intent = new Intent(context, MainActivity.class);
// Zabalíme úmysel do PendingIntent
// requestCode sa používa na identifikáciu pending intentu
// FLAG_UPDATE_CURRENT: ak taký pending intent už existuje, aktualizujte ho
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
);