PendingIntent
日付:2022/03/23
URL:https://developer.android.com/reference/android/app/PendingIntent , https://developer.android.com/training/notify-user/navigation , https://developer.android.com/guide/components/intents-filters?hl=ja#PendingIntent
調査者:Mori Atsushi
カテゴリ:Android Platform
一言で表すと
IntentのWrapperで、他のアプリケーションから呼び出せるようにする
概要
他のアプリケーションからIntentを呼び出してほしいときに使う
利用例
通知
NotificationManagerが実施する
ウィジェット
ホーム画面のアプリが実行する
将来の指定された時間に実施する
AlarmManagerが実施する
Activity、Service、BroadcastReceiverの起動に対応している
他のアプリケーションが自分自身であるかのように(同じ権限とIDで)実行ができる
作成には注意する必要がある
保留中のインテント自体は、システムが保持するトークンへの参照
所有するアプリケーションのプロセスが強制終了された場合でも、それを与えられた他のプロセスからPendingIntentを引き続き使用できる
cancelを呼び出すことで無効化できる
PendingIntentを複数作ったときに区別する必要がある
extrasは比較に使われないので、同一のものとして扱われる
Intent.dataやIntent.actionを変えるか、requestCodeを変更する
chigichan24.icon categoryだとだめ?
比較対象みたい
同じものがあったときにどう振る舞うか
FLAG_UPDATE_CURRENT
今のPendingIntentの情報を上書きする
すでにPendingIntentを受け取ったプロセスが、明示的に指定されてなくても新しいIntentで起動できる
FLAG_CANCEL_CURRENT
今のPendingIntentをキャンセルして、新しく作成する
以前PendingIntentを受け取ったプロセスは起動できなくなる
FLAG_ONE_SHOT
一度のみ起動できるIntent
起動されるとキャンセルされる
FLAG_NO_CREATE
すでに同一のPendingIntentがなければnullを返す
FLAG_IMMUTABLE
Android12でFLAG_MUTABLEかどちらかが強制になったやつ
呼び出し時にPendingIntentのパラメータを上書きできないようにする
FLAG_UPDATE_CURRENTでの上書きはできる
Mori Atsushi.icon immutableじゃないじゃんけ!
FLAG_MUTABLE
Android12でFLAG_IMMUTABLEかどちらかが強制になったやつ
呼び出し時の上書きが可能
気になるポイント
メモ
コメント