Middle
Kas ir PendingIntent?
sobes.tech AI
Atbilde no AI
Tas ir apvalks ap Intent, kuris delegē pilnvaras citai lietojumprogrammai izpildīt šo Intent mūsu vārdā nākotnē.
Galvenās īpašības:
- Aizkavēta izpilde:
Intentnetiek izpildīts uzreiz, bet vēlāk, ar cita komponenta starpniecību. - Atļaujas: Komponents, kam tiek nodots
PendingIntent, saņem tās pašas atļaujas kā mūsu lietojumprogramma šīIntentizpildei. - Unikalitāte: Atšķirīgi
PendingIntenttiek uzskatīti par vienādiem, ja tiem sakrīt komponenta tips, darbība (action), dati (data), kategorijas (categories) un karogi (flags). - Izmantošana: Bieži tiek izmantots paziņojumiem, fonu uzdevumiem, viedtālruņu logrīkiem un AlarmManager.
PendingIntent tipi atbilst mērķa komponentu tipiem:
getActivity(Context context, int requestCode, Intent intent, int flags): uzsākActivity.getBroadcast(Context context, int requestCode, Intent intent, int flags): nosūta plašsaziņas signālu.getService(Context context, int requestCode, Intent intent, int flags): uzsāk vai pieslēdzasService.getForegroundService(Context context, int requestCode, Intent intent, int flags): uzsākForeground Service.
// Piemērs, kā izveidot PendingIntent paziņojumiem
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
context,
0, // requestCode, izmanto, lai atšķirtu PendingIntent
notificationIntent,
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Karogi pārvaldībai
);
// Tagad šo pendingIntent var nodot, piemēram, Notification
Karogi (flags) ietekmē uzvedību, izveidojot vai atjauninot esošo PendingIntent:
FLAG_ONE_SHOT:PendingIntentvar tikt izmantots tikai vienu reizi.FLAG_NO_CREATE: JaPendingIntentneeksistē, tas netiks izveidots, tiks atgrieztsnull.FLAG_CANCEL_CURRENT: Ja jau pastāvPendingIntentar tiem pašiem parametriem, tas tiek anulēts un tiek izveidots jauns.FLAG_UPDATE_CURRENT: Ja jau pastāvPendingIntentar tiem pašiem parametriem, tā papildu dati (Extra data) tiek atjaunināti.FLAG_IMMUTABLE(no S/API 31 obligāti lielākajā daļā gadījumu): Izveido nemaināmuPendingIntent.FLAG_MUTABLE: Izveido maināmuPendingIntent(lietot ar piesardzību, var būt neaizsargāts).
Pareiza karoga izvēle ir kritiska pareizai darbībai un drošībai.