问题 Android后退按钮行为


假设我们有一个带默认行为的默认空活动,使用默认意图标志启动。用户按下设备上的后退按钮。活动消失了......但实际上怎么样?

  • 按下按钮的行为方式与此相同 finish()
  • 活动是否立即被破坏(onDestroy 叫做)?
  • 活动是否保证被销毁,但不能立即销毁?
  • 是否有可能不会销毁活动,并且在将来启动此活动时将重复使用此实例? (所以只有 onPause 和 onStop  - > onStart 和 onResume 叫做?)

我正在寻找一个可靠的答案,所以如果你不确定这里发生了什么,请不要回答。


8909
2017-07-23 10:58


起源

这可能是你感兴趣的: developer.android.com/training/basics/activity-lifecycle/... - Chips_100
你可以发布你的代码,所以我们可以更好地判断 - Rahul Baradia
有东西吗? default, empty activity with default behaviour, launched with default intent flags 你不能重现?只需在IDE中创建一个默认项目即可。 - Sebastian Nowak
@ Chips_100:你提供的链接没有回答这个问题。 - Sebastian Nowak
阅读本小节: developer.android.com/training/basics/activity-lifecycle/...  [...]your activity is destroyed due to normal app behavior, such as when the user presses the Back button or your activity signals its own destruction by calling finish().[...] 我建议阅读整章。 - Chips_100


答案:


http://developer.android.com/training/basics/activity-lifecycle/recreating.html

这是解决您问题的官方Android文档的子章节。这是该主题的一个分章 Managing the Activity Lifecycle,可以在这里阅读: http://developer.android.com/training/basics/activity-lifecycle/index.html

绝对值得阅读整章,以了解有关Androids Activity行为的详细信息。但是,分章(第一个链接)是这个问题的相关部分。


6
2017-07-23 14:15



这是一个 仅限链接的答案,你能引用文档的相关部分吗?通过强迫人们阅读这些文章,尝试使用苏格拉底式方法并使用它来感觉你想做好事 扰流降价。 - TWiStErRob


你使用应该看看这个 尝试这个

请告诉具体你想用你的默认活动的后退按钮做什么......


2
2017-07-23 11:20





当您按下(如果没有被键盘,片段,活动等任何东西拦截)时,操作系统(可能通过ActivityManager)将尝试向用户显示当前任务中的上一个活动(同样,忽略片段的后台) 。

如果没有此类活动,任务将被终止,您将转到上一个任务 - 大多数时间的主屏幕或可能已启动您的应用程序的其他应用程序。

你会得到 onDestroy 很快就会调用(这取决于开始下一个活动需要多长时间,但在好的手机上它应该在100-200ms之内)。

您的活动实例不会在以后重复使用 onFinish。这在活动被销毁之前发生,因此如果您需要另一个相同类型的活动,操作系统将创建另一个实例。


2
2017-07-23 11:10



这不是我所问过的。这个问题足够精确。 - Sebastian Nowak
“活动消失了......但实际上怎么样?” - 我想我已经解决了你的问题 - Pedro Loureiro
这就是你的问题。你只需阅读第一句话并不加思索地回答。如果你会阅读其余部分,你会注意到我已经解释了我究竟要问的是什么。 - Sebastian Nowak


当用户按下BACK键时,当前活动从堆栈顶部弹出(保证活动被销毁,但不能立即销毁,可能是系统资源不足时),之前的活动恢复(之前的状态)其UI已恢复)。

Android上的后退按钮/后退键会触发哪些操作?


1
2017-07-23 11:09



请参考这个问题: stackoverflow.com/questions/4778754/... 如果它总是被破坏,那么为什么他们强制在后退按钮上完成()? - Sebastian Nowak
另请查看接受的答案: stackoverflow.com/questions/3249332/... - Sebastian Nowak


Definitly onDestroy() 被称为.....在某些情况下,您的活动会因应用程序的正常行为而被销毁,例如当用户按下“返回”按钮或您的活动通过调用发出自己的破坏信号时 finish()


0
2018-01-14 00:12