私は検索ダイアログからインテントを受信するためにsingleTop Activityを使用しています。onNewIntent()
。
私が気づいたのは、onPause()
の前に が呼び出されonNewIntent()
、その後に が呼び出されることですonResume()
。視覚的には次のようになります。
- 検索ダイアログが開始されました
- 検索意図がアクティビティに発動される
onPause()
onNewIntent()
onResume()
問題は、onResume()
で削除されるリスナーが に登録されているonPause()
が、そのリスナーは 呼び出し内で必要であるということですonNewIntent()
。これらのリスナーを利用可能にする標準的な方法はありますか?
ベストアンサー1
onNewIntent()
は、スタック内の別の場所で既に実行されているため を呼び出すことができない singleTop アクティビティのエントリ ポイントとして意図されています。アクティビティのライフサイクルの観点からは、の前にonCreate()
を呼び出す必要があります。 内でこれらのリスナーを使用しないようにアクティビティを書き直すことをお勧めします。たとえば、ほとんどの場合、私のメソッドは次のようになります。onPause()
onNewIntent()
onNewIntent()
onNewIntent()
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// getIntent() should always return the most recent
setIntent(intent);
}
すべてのセットアップ ロジックはonResume()
を利用して実行されますgetIntent()
。