0

我试图了解按下后退按钮时会发生什么。系统如何操作回栈?它从哪里得到窗口句柄到顶部窗口?
我已经查看了PhoneWindowManager.java,但找不到我要找的东西。有人之前看过这段代码吗?

4

3 回答 3

1

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

简而言之:

  • Up 按钮用于根据屏幕之间的层次关系在应用程序中导航。
  • 系统后退按钮用于按时间倒序浏览用户最近使用过的屏幕的历史记录。它通常基于屏幕之间的时间关系,而不是应用程序的层次结构。

例如,当您从另一个应用程序导航到一个应用程序时,差异是很好的市场。例如:您正在通过邮箱中的链接访问应用程序的 Google Play 屏幕。进入 Google Play 后:

  • Up 会带你到 Google Play 的首页进行申请
  • Back 将带您回到 GMail 应用程序
于 2012-10-19T21:40:37.447 回答
0

好吧,这将带您返回,就像返回按钮一样:

super.onBackPressed();
于 2012-10-19T23:50:17.903 回答
0

onBackPressed()的文档说后退按钮只是结束当前活动。不需要回栈操作。

在更深层次上,Android 确实在Task内部维护了一堆Activity,它可以确定当顶部 Activity 完成时接下来要显示哪个 Activity。但是这些机制存在于本机代码中,并且可能超出了您尝试做的范围。据我所知,您可以从 Java 中做的最好的事情是使用RunningTaskInfo (此处为源代码),它将公开当前任务中的“基础”和“顶级”活动。

如果您尝试实现复杂的应用导航,可以使用许多标志来控制 Activity 在堆栈上的放置方式。

于 2012-10-20T00:06:56.990 回答