【问题标题】:what exactly android's home button doing?android的主页按钮到底在做什么?
【发布时间】:2012-07-07 18:05:00
【问题描述】:

我所知道的是当前活动进入 onPause() 模式,并且主屏幕活动被带到前面。

我的困惑始于您可以从最近的任务菜单中重新打开应用程序的情况。 那么当我从最近的任务管理器中打开应用程序时到底发生了什么?

按下主页按钮时处于前台的 Activity 是否仍在堆栈中的某个位置?

是否同时存在多个活动堆栈?

【问题讨论】:

  • @Orlymee:我不知道马拉卡纳语。他是android的官方文档来源吗?如果不是 - 那么我不明白为什么我无法在 android 开发者网站上找到有关它的信息。我也不认为我的问题值得反对。我敢打赌,很多开发者都不知道 Raykud 的回答中讨论了什么!

标签: android activity-lifecycle application-lifecycle


【解决方案1】:

据我了解,没有真正的(应用程序)堆栈。只是您的activity 有状态,所以每当您按下 HOME 按钮时,您当前应用程序中的活动只会“暂停”,就像它是待机状态一样,只要系统处于此状态,多个应用程序就可以不需要内存并杀死任务。 因此,每当您从最近的任务中打开 activity 时,它只会告诉应用程序唤醒。

【讨论】:

  • 每个任务中有一堆活动,您可以使用后退按钮提升这些活动
  • 有一堆活动,但没有应用程序 (afaik)。我只是编辑得更清楚。
  • @Raykud:根据你和 Chris Statton 的说法,这些应用程序中的每一个都有自己的活动堆栈,当我选择唤醒其中一个时 - 已经完成了一些上下文切换,并且应用程序的堆栈“恢复业务”?
  • @Chris Stratton:你能告诉我在 android 开发者网站的哪里可以找到有关这种行为的文档吗?
  • 几乎 - 更多地考虑一项任务,其中可能包括来自多个应用程序的活动,这些活动按意图堆叠以完成某事。最近的任务让您可以通过每个任务堆栈顶部的活动来选择各种任务堆栈。我确信它写在某处,但如果你编写一些发送或接收意图的活动,尤其是在你的应用程序外部,它会变得最清楚。
【解决方案2】:

首先,您需要了解有关“向上按钮”概念的所有信息: Navigation with Back and Up 和一些实现细节:Providing Ancestral and Temporal Navigation

一般来说,向上按钮可让您在应用程序层次结构中向上导航,而不仅仅是在应用程序的返回堆栈中导航。

例如,如果您使用某种应用程序并收到电子邮件通知,则可以通过按通知打开邮件客户端。然后,您可以通过按 Back 按钮 ( back-stack ) 返回到您正在使用的应用程序,或者您可以按 Up 按钮以转到邮件客户端的“父”活动(例如从一些 EmailMessageActivity 到 EmailHomeActivity )使用邮件客户端应用程序而不是初始应用程序(通常会清除返回堆栈,因此您只能使用返回按钮返回到 Android 主屏幕)。

“最近的任务”因素无关紧要且具有误导性,它只是开始新活动的另一种方式。

【讨论】:

  • 我所问的与您的回答之间没有任何联系。我想要关于主页按钮的信息,而你给我写了关于后退和向上按钮的信息。这就是我知道他们在做什么。
  • 如果您了解 VizZ 链接的主题,很难看出您仍然会对主页按钮感到困惑。
  • 其实他说的有点对,克里斯。我猜他指的是安卓的硬件主页按钮。我想,他的意思是“向上”按钮,有时也称为“主页按钮”(例如,它的默认 ID 是 android.R.id.home )。我的错。另一方面,如果您知道上/后退按钮的作用,您怎么能不知道单击主页按钮时发生了什么?另外,为什么不通过在 Activity 的生命周期回调方法(onCreate、onStart、onResume、onPause、onStop、onDestroy)上在 Debug 模式下运行一些示例应用程序来自己检查它?
  • @vizZ:我已经检查过了。但在 Raykud 的回答和 Chris cmets 之前 - 我很确定可以暂停活动的唯一方法 - 是在“唯一一个”活动堆栈中的某个地方。现在我知道它也可以处于这种“并行”睡眠应用程序模式,系统可以随时根据空闲内存状态决定销毁它,另一方面 - 它可以在当用户从最近的应用程序中选择它时,活动堆栈(除非它被系统销毁,然后从头开始创建)。
猜你喜欢
  • 1970-01-01
  • 2012-12-05
  • 2011-07-28
  • 2011-10-30
  • 2010-12-30
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 2017-05-17
相关资源
最近更新 更多