Proč se používá PendingIntent místo běžného Intentu?
sobes.tech AI
Odpověď od AI
PendingIntent umožňuje předat záměr (Intent) jiné aplikaci, aby jej mohla vykonat jménem vaší aplikace v pozdějším čase, a to i v případě, že vaše aplikace byla ukončena.
Hlavní důvody pro použití PendingIntent:
- Upozornění: Spuštění aktivity nebo služby při kliknutí na upozornění, i když aplikace v tu chvíli není aktivní.
- Widgety na ploše: Spuštění akce v aplikaci při interakci s widgetem.
- Budíky a odložené úkoly: Spuštění kódu aplikace v určitou dobu nebo podle podmínky pomocí
AlarmManager. - SMS a další příjemci vysílání: Vykonání akce v aplikaci při přijetí vysílacího záměru.
Obvyklý Intent se vykoná okamžitě a v kontextu vaší aplikace. PendingIntent je však obal nad Intent, který dává jiné aplikaci povolení vykonat tento Intent se stejnými právy, jako by jej vykonala vaše aplikace.
Při vytváření PendingIntent je třeba zvolit typ komponenty, která bude spuštěna: aktivita (getActivity), služba (getService) nebo vysílač (getBroadcast). Také jsou uvedena vlajky, které určují chování PendingIntent, například jak zacházet s existujícími záměry (FLAG_UPDATE_CURRENT, FLAG_CANCEL_CURRENT).
Příklad vytvoření PendingIntent pro spuštění aktivity:
// Vytvoříme záměr pro spuštění MainActivity
Intent intent = new Intent(context, MainActivity.class);
// Zabalíme záměr do PendingIntent
// requestCode se používá k identifikaci pending intent
// FLAG_UPDATE_CURRENT: pokud takový pending intent již existuje, aktualizujte jej
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT
);