2012-07-23 81 views
11

比方说,我们有一个默认情况下,默认行为空活动,使用默认意图标志启动。用户按下设备上的后退按钮。活动消失......但实际上呢?Android的后退按钮行为

  • 按下后退按钮的行为方式与finish()相同吗?
  • 是活动immedietely破坏(onDestroy叫)?
  • 活动是否被保证被破坏,但不是一蹴而就的?
  • 是否有任何机会的活动将不会被破坏,当该活动在未来推出这种情况下会被重用? (所以只有和onStop - >onStartonResume被称为?)

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

+4

这可能是你的兴趣:http://developer.android.com/training/basics/activity-lifecycle/index.html – 2012-07-23 10:59:34

+0

你可以发布你的代码,所以我们可以更好地判断 – 2012-07-23 11:05:16

+1

是否有'default ,具有默认行为的空活动,使用默认意图标志启动,您无法复制?只需在IDE中创建一个默认项目。 – 2012-07-23 11:05:57

回答

6

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活动行为的细节。但是这个子章节(第一个链接)是这个问题的相关部分。

+0

这是一个[仅限链接的答案](http://meta.stackexchange.com/q/8231/247470),你能引用文档的相关部分吗?感觉就像你想通过强迫人们阅读这些文章,尝试苏格拉底方法并使用[破坏者降价](http://meta.stackexchange.com/q/1191/247470)来做好事。 – TWiStErRob 2016-03-02 11:04:04

1

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

Which actions does the back button/back key on Android trigger?

+0

请参考这个问题:http://stackoverflow.com/questions/4778754/kill-activity-on-back-button如果它总是被破坏,那么为什么他们迫使背部面漆()按钮? – 2012-07-23 11:16:45

+0

也检查出接受的答案在这里:http://stackoverflow.com/questions/3249332/did-back-key-destroy-an-activity – 2012-07-23 11:17:14

2

当您按下回来,OS(通过ActivityManager可能)(如果没有被像键盘,片段,活动等任何拦截)将尝试向用户显示以前的活动您当前的任务(同样,忽略碎片的背堆栈)。

如果没有这样的活动,任务将被终止,你会去上一个任务 - 在主屏幕上大部分的时间或可能已经推出您的应用程序的一些其他的应用。

你会得到onDestroy叫一声(这取决于它需要多长时间来启动下一个活动,而是一个很好的手机上应该是100-200ms下)。

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

+0

这不是我问过的。这个问题很精确。 – 2012-07-23 11:14:54

+0

“活动消失......但是,实际上呢?” - 我想我解决了你的问题 – 2012-07-23 12:25:35

+0

这就是你的问题。你只是读了第一句话,没有想到就回答。如果你会阅读其余的内容,你会注意到我已经解释了我究竟在问什么。 – 2012-07-23 13:05:55

2

使用应该看看这个try this

,并请告知具体你想与您的默认活动后退按钮做什么......

0

Definitly onDestroy()被称为.....有几种情况下,您的活动由于正常的应用程序行为而遭到破坏,例如用户按下“后退”按钮或您的活动通过调用finish()表示其自身销毁。