Sobes.tech
Middle

PendingIntent чист?

sobes.tech AI

Ҷавоб аз AI

Ин инҷо як пӯсти атрофи Intent аст, ки ваколатҳоро ба барномаи дигар медиҳад, то ин Intent-ро дар номи мо дар оянда иҷро кунад.

Хусусиятҳои асосӣ:

  • Иҷрои дер: Intent наҳр ба таври фаврӣ, балки баъдтар, аз ҷониби дигар компонент иҷро мешавад.
  • Иртиботҳо: Компоненте, ки PendingIntent-ро мегирад, ҳамон иҷозатҳоро мегирад, ки барномаи мо барои иҷрои ин Intent.
  • Уникалият: PendingIntent-ҳо дар назар гирифта мешаванд, ки якхела бошанд, агар намуд, амал (action), маълумот (data), категорияҳо (categories) ва флагҳо (flags) мувофиқат кунанд.
  • Истифода: Баъзан барои огоҳиномаҳо, вазифаҳои пасзамана, widget-ҳо ва AlarmManager истифода мешавад.

Намудҳои PendingIntent ба намудҳои компонентҳои мақсадӣ мувофиқат мекунанд:

  • getActivity(Context context, int requestCode, Intent intent, int flags): оғоз кардани Activity.
  • getBroadcast(Context context, int requestCode, Intent intent, int flags): фиристодани сигнали пахш.
  • getService(Context context, int requestCode, Intent intent, int flags): оғоз ё пайвастшавӣ ба Service.
  • getForegroundService(Context context, int requestCode, Intent intent, int flags): оғоз кардани Foreground Service.
// Намунаи эҷоди PendingIntent барои Notifications
Intent notificationIntent = new Intent(context, MainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
    context,
    0, // requestCode, барои фарқ кардани PendingIntent истифода мешавад
    notificationIntent,
    PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE // Флагҳо барои идоракунии рафтор
);
// Акнун ин pendingIntent метавонад ба мисол, дар Notification гузошта шавад

Флагҳо (flags) дар рафтор дар вақти эҷод ё навсозии PendingIntent мавҷуданд:

  • FLAG_ONE_SHOT: PendingIntent метавонад танҳо як бор истифода шавад.
  • FLAG_NO_CREATE: Агар PendingIntent вуҷуд надошта бошад, он эҷод намешавад, null баргардонида мешавад.
  • FLAG_CANCEL_CURRENT: Агар PendingIntent бо параметрҳои ҳамон вуҷуд дошта бошад, он бекор карда мешавад ва нав эҷод мешавад.
  • FLAG_UPDATE_CURRENT: Агар PendingIntent бо параметрҳои ҳамон вуҷуд дошта бошад, маълумоти иловагӣ (Extra data) нав карда мешавад.
  • FLAG_IMMUTABLE (аз S/API 31 ҳатмӣ барои бештар ҳолатҳо): Эҷод кардани PendingIntent беэътибор.
  • FLAG_MUTABLE: Эҷод кардани PendingIntent тағйирёбанда (бо эҳтиёт истифода баред, метавонад осебпазир бошад).

Интихоби флаги дуруст барои кор ва бехатарӣ муҳим аст.