という事象が発生した。
BroadcastReceiverからはFLAG_ACTIVITY_NEW_TASKでstartIntent()しているので 更新すると思っていたが出来ないようだ。
PendingIntentはPendingIntent.FLAG_CANCEL_CURRENTで作成しているので BroadcastReceiverの段階では更新されたIntentが来ているのは確認済み。
GoogleのドキュメントによるとgetIntent()はActivity起動時の値を取得するためのもの であり、そのまま使用しても都度更新されるような作りではないよう。
困り果てたとき、onNewIntet()なるActivityクラスのメソッドを発見。
onNewIntent()はFLAG_ACTIVITY_NEW_TASKでActivityを起動した際に onResume()の前に実行されるもののよう。
onCreate()からライフサイクルが始まる際には呼ばれない。
このonNewIntentにはActivity起動時のIntentじゃなく更新されたIntentが 入ってくるのでsetIntent()にそれを引数に渡すことでgetIntent()の値を更新できる。
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); //画面表示時に再度起動された際にgetIntent()を更新する。 setIntent(intent); }
0 件のコメント:
コメントを投稿