Android OS は、メモリが不足するとプロセスを強制終了します。シナリオ: Android がアプリ プロセスを強制終了し、Android ランチャーまたは最近のタスク リスト (ホーム ボタンを長押し) を使用してアプリを再度開きます。Android が最近表示したアクティビティの onCreate() メソッドでアプリ プロセスを強制終了したかどうかを確認するには、次を使用します。
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
// Re-initialise things that killing the app would have destroyed
}
}
ただし、Android がアプリ プロセスを強制終了し、PendingIntent 内にパッケージ化されたインテントを使用して通知を介して再度開いた場合、アプリ プロセスが Android によって強制終了されたかどうかを判断する方法がわかりません。その後、アプリ プロセスを強制終了すると破壊されたものを再初期化しません。
通知から新しいアクティビティを開くときに Android がアプリケーション プロセスを強制終了したかどうかを判断する方法はありますか?
この問題に対するハックな解決策を 1 つ見つけました。使用: Android: 通知をクリックすると常にトップ アクティビティを起動する Android がアプリ プロセスを強制終了し、再初期化を処理する場合、savedInstanceState が渡されるスタックの一番上にあるアクティビティを開くことができます。各アクティビティは、元の Notification Intent の Extras を使用して、ユーザーを適切なアクティビティにリダイレクトする役割を果たします。このシナリオの意図の設定は次のとおりです。
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.setAction(Intent.ACTION_MAIN);
notificationIntent.addCategory(Intent.CATEGORY_LAUNCHER);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
ユーザーが新しいインテント/アクティビティで行ったかのように、アプリプロセスを再度開くことをエミュレートするインテントに設定できるアクション、カテゴリ、またはフラグはありますか?
編集:最後の質問を明確にするために (Android の幼児の理解が私を失敗させているようですが、おそらく意味がありません): 上記のスニペットのように、インテントに設定できるアクション、カテゴリ、またはフラグはありますか?アプリプロセスがOSによって強制終了されたかどうかを判断できるようになりますか?