Android后退按钮行为

Android后退按钮行为,android,android-activity,onresume,onpause,ondestroy,Android,Android Activity,Onresume,Onpause,Ondestroy,假设我们有一个默认的、带有默认行为的空活动,使用默认意图标志启动。用户按下设备上的“后退”按钮。活动消失了。。。但事实上如何 按“后退”按钮的行为是否与finish()相同 活动是否立即被销毁(onDestroy被调用) 是否保证活动会被销毁,但不会立即销毁 将来启动此活动时,是否有可能不会销毁此活动,并重用此实例?(因此只调用onPause和onStop->onStart和onResume) 我正在寻找一个可靠的答案,因此,如果您不能完全确定这里发生了什么,请不要回答。当用户按下后退键时,

假设我们有一个默认的、带有默认行为的空活动,使用默认意图标志启动。用户按下设备上的“后退”按钮。活动消失了。。。但事实上如何

  • 按“后退”按钮的行为是否与
    finish()
    相同
  • 活动是否立即被销毁(
    onDestroy
    被调用)
  • 是否保证活动会被销毁,但不会立即销毁
  • 将来启动此活动时,是否有可能不会销毁此活动,并重用此实例?(因此只调用
    onPause
    onStop
    ->
    onStart
    onResume

我正在寻找一个可靠的答案,因此,如果您不能完全确定这里发生了什么,请不要回答。

当用户按下后退键时,当前活动从堆栈顶部弹出(该活动保证会被销毁,但不会立即销毁,可能是在系统资源不足时)然后恢复上一个活动(恢复其UI的上一个状态)

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

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

你很快就会接到
onDestroy
的电话(这取决于开始下一项活动所需的时间,但在一部好的手机上,它应该在100-200毫秒以下)


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

您使用的应该对此进行研究

请具体说明您希望对默认活动的“后退”按钮做什么……

这是Android官方文档中的一个子章节,它解决了您的问题。它是主题
管理活动生命周期
的一个子章,可在此处阅读:


阅读整章绝对值得,以了解有关机器人活动行为的细节。但是第二章(第一个链接)是这个问题的相关部分。

明确地说,
onDestroy()
被调用。……有一些情况下,您的活动由于正常的应用程序行为而被破坏,例如当用户按下后退按钮或您的活动通过调用
finish()
发出自己被破坏的信号时

这可能会引起您的兴趣:您能发布您的代码吗?这样我们就可以更好地判断
default、带有默认行为的空活动、使用默认意图标志启动的活动中是否存在您无法复制的内容?只需在您的IDE中创建一个默认项目。@Chips\u 100:您提供的链接没有回答此问题。请阅读此分章:
[…]您的活动由于正常的应用程序行为而被销毁,例如当用户按“上一步”按钮或您的活动通过调用finish()发出自己的销毁信号时。[…]
不过,我建议您阅读整个章节。这不是我要问的。这个问题很精确。“活动消失了……但实际上是如何消失的?”-我想我已经回答了你的问题,这就是你的问题所在。你只是读第一句话,然后不假思索地回答。如果你阅读剩下的内容,你会注意到我已经解释了我到底在问什么。请参考这个问题:如果它总是被破坏,那么为什么他们会强制在后退按钮上单击finish()?也可以在这里查看接受的答案:这是一个,你能引用文档的相关部分吗?感觉上你想通过强迫人们阅读这些文章,尝试苏格拉底式的方法,并使用。