Middle
Mi az a PendingIntent?
sobes.tech MI
Válasz az MI-től
Ez egy burkolat a Intent körül, amely felhatalmazást ad egy másik alkalmazásnak arra, hogy a nevünkben végrehajtsa ezt a Intent-et a jövőben.
Fő jellemzők:
- Elhalasztott végrehajtás: A
Intentnem azonnal kerül végrehajtásra, hanem később, egy másik komponens által. - Engedélyek: A komponens, amelyhez a
PendingIntentkerül, ugyanazokat az engedélyeket kapja, mint a mi alkalmazásunk, hogy végrehajtsa ezt aIntent-et. - Egyediség: Különböző
PendingIntent-ek ugyanolyannak számítanak, ha megegyeznek a komponens típusa, az akció (action), az adatok (data), a kategóriák (categories) és a zászlók (flags). - Használat: Gyakran használják értesítésekhez, háttérfeladatokhoz, widgetekhez és AlarmManagerhez.
A PendingIntent típusok megfelelnek a célkomponensek típusainak:
getActivity(Context context, int requestCode, Intent intent, int flags): indít egyActivity-t.getBroadcast(Context context, int requestCode, Intent intent, int flags): broadcastot küld.getService(Context context, int requestCode, Intent intent, int flags): indít vagy csatlakozik egyService-hez.getForegroundService(Context context, int requestCode, Intent intent, int flags): indít egyForeground Service-t.
// Példa PendingIntent létrehozására értesítésekhez
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0, // requestCode, a PendingIntent megkülönböztetésére szolgál
notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Zászlók a viselkedés kezeléséhez
);
// Most ezt a pendingIntent-et át lehet adni, például, egy értesítéshez
A zászlók (flags) befolyásolják a viselkedést, amikor meglévő PendingIntent-et hozunk létre vagy frissítünk:
FLAG_ONE_SHOT: APendingIntentcsak egyszer használható.FLAG_NO_CREATE: Ha aPendingIntentnem létezik, nem hozza létre,null-t ad vissza.FLAG_CANCEL_CURRENT: Ha már létezik egy ugyanolyan paraméterekkel rendelkezőPendingIntent, akkor törli, és újat hoz létre.FLAG_UPDATE_CURRENT: Ha már létezik egy ugyanolyan paraméterekkel rendelkezőPendingIntent, akkor frissíti a kiegészítő adatokat.FLAG_IMMUTABLE(kötelező S/API 31-től a legtöbb esetben): Létrehoz egy változatlanPendingIntent-et.FLAG_MUTABLE: Létrehoz egy változtathatóPendingIntent-et (óvatosan, sérülékeny lehet).
A megfelelő zászló kiválasztása kritikus a helyes működéshez és biztonsághoz.