ここで Android スタックについて多くのことを目にしますが、思い通りに動作させることができません。次の図では、各遷移に番号を付けています。
移行 8 は簡単でした。Intent.FLAG_ACTIVITY_NO_HISTORY を使用してレベル難易度選択アクティビティを開始します。次に、ヒットバックはそれをスキップして、レベル選択アクティビティに戻ります。
トランジション 4 では、再起動後にゲームに戻ると、同じゲームの前のインスタンスで終了するため、問題が発生しました。私はfinish()を呼び出していたので、よくスタックする理由はわかりませんが、ゲームアクティビティを開始するときに Intent.FLAG_ACTIVITY_NO_HISTORY を使用すると、この問題は解決します。ただし、遷移 6 と 7 が機能しないため、これは問題を引き起こします。タスク マネージャーまたはアイコンからアプリを起動すると、常にメイン メニューから開始されます。
最大の問題はトランジション 5 です。ホームを押すとアプリが終了します。それをトラップする方法はないので、ダイアログをポップアップして、ユーザーに本当に終了するかどうかを尋ねることができます。つまり、ゲーム アクティビティに戻るには、トランジション 6 と 7 を取得する必要があります。私はそれを行う方法がわかりません。
私が知る必要があるのは、トランジション 4 がゲーム アクティビティの複数のインスタンスを実行し続けないようにするために、さまざまなインテントにどのフラグを追加するかということです。 )。