如何在AOSP代码中实现导航栏上的后退按钮?

时间:2012-10-19 21:29:33

标签: android android-source

我试图了解按下后退按钮时会发生什么。系统如何操纵后栈?窗户把手从哪里到顶窗? 我调查了PhoneWindowManager.java,但找不到我要找的东西。有人早点看过这个代码吗?

3 个答案:

答案 0 :(得分:1)

您所指的“操作栏中的后退按钮”称为“向上按钮”。文档中的那篇文章很好地解释了两者之间的差异:Navigation with Back and Up

简而言之:

  • “向上”按钮用于根据屏幕之间的层次关系在应用内导航。
  • 系统返回按钮用于按反向时间顺序浏览用户最近使用过的屏幕历史记录。它通常基于屏幕之间的时间关系,而不是应用程序的层次结构。

例如,当您从其他应用导航到应用时,差异就是市场。例如:您正通过邮箱中的链接访问应用程序的Google Play屏幕。进入Google Play:

  • 向上会将您带到Google Play的应用程序主页
  • 返回会将您带回GMail应用程序

答案 1 :(得分:0)

好吧,这会让你回来,就像后退按钮一样:

super.onBackPressed();

答案 2 :(得分:0)

onBackPressed()的文档说“后退”按钮只是结束当前活动。不需要后台操纵。

在更深层次上,Android会在Task内维护一系列活动,并且可以确定在最高活动结束时下一个要显示的活动。但这些机制存在于本机代码中,可能超出了您尝试的范围。据我所知,你可以用Java做的最好的就是使用RunningTaskInfo(源代码here),它将在当前任务中公开“基础”和“顶层”活动。

如果您正在尝试实施复杂的应用导航,可以使用a number of flags来控制活动在堆栈上的放置方式。