戻るボタンを押すとどうなるか理解しようとしています。システムはバックスタックをどのように操作しますか? ウィンドウハンドルはどこからトップウィンドウに到達しますか?
を調べましたがPhoneWindowManager.java
、探しているものが見つかりませんでした。このコードを以前に見た人はいますか?
3 に答える
あなたが「アクションバーの戻るボタン」と呼んでいるものは「上ボタン」と呼ばれます。2 つの違いは、ドキュメントのその記事でよく説明されています: Navigation with Back and Up。
要するに:
- Up ボタンは、画面間の階層関係に基づいてアプリ内を移動するために使用されます。
- システムの [戻る] ボタンは、ユーザーが最近操作した画面の履歴を新しい順にナビゲートするために使用されます。通常、アプリの階層ではなく、画面間の時間的な関係に基づいています。
たとえば、別のアプリからアプリに移動するときなど、違いは十分に市場に出ます。例: メールボックスのリンクからアプリケーションの Google Play 画面にアクセスしています。Google Play に入ったら:
- 上に移動すると、アプリケーションの Google Play のホームに移動します
- [戻る] をクリックすると、GMail アプリケーションに戻ります
さて、これは、戻るボタンのように、あなたを元に戻します:
super.onBackPressed();
onBackPressed()のドキュメントには、戻るボタンは単に現在のアクティビティを終了すると書かれています。バックスタックの操作は必要ありません。
より深いレベルでは、Android はTask内にアクティビティのスタックを維持し、最上位のアクティビティが終了したときに次に表示するアクティビティを決定できます。しかし、これらのメカニズムはネイティブ コードに存在し、おそらくあなたがしようとしていることの範囲を超えています。私の知る限り、Java からできる最善の方法は、RunningTaskInfo (ソース コードはこちら) を使用することです。これにより、現在のタスクの「ベース」アクティビティと「トップ」アクティビティが公開されます。
複雑なアプリ ナビゲーションを実装しようとしている場合は、アクティビティをスタックに配置する方法を制御するために使用できるフラグがいくつかあります。