私のアプリでは、次の構造があります。
アクティビティ A はアクティビティ B を呼び出して終了し、スタックから自身を削除します。アクティビティ B は、実行するアクションを指定するアクティビティ A からインテントを受け取ります。これらのアクションが実行されると、それを示すメッセージがユーザーに表示されます (まだアクティビティ B にあります)。ユーザーがホーム ボタンを押すと、アプリはバックグラウンドに移行し、を呼び出し"onPause"
てから"onStop"
. すべてが期待どおりに機能します。
問題は、ユーザーがアプリをバックグラウンドで数時間放置し、(数時間後に) 再度アプリを開こうとするとonCreate
、アクティビティ B のメソッドが、数時間前に受信したものとまったく同じ意図で呼び出されることです。活動A。
(ユーザーが数分後にアプリに戻ると、離れたときと同じようにアクティビティ B が表示されます)
私が望んでいたのは、この場合、アプリがアクティビティ B ではなくアクティビティ A を開くか、アクティビティ B を開くが、ユーザーが去ったときに画面に表示されていたメッセージを表示することでした。
アクティビティのライフ サイクルを見ると、アプリが OS によって強制終了されているように見えますが、これはすべて理にかなっています。アクティビティ B がonCreate
メソッドと以前と同じ意図で開く理由が本当にわかりません。