果冻豆中的活动生命周期是不同的

时间:2012-09-07 17:14:03

标签: android android-activity android-4.2-jelly-bean

我在我的应用程序中运行在jelly bean 4.1.1时有一个奇怪的行为,当我启动一个Activity并按下后退按钮返回到第一个活动它通过调用onCreate重新创建它我做了什么我也处理了第一个活动的配置更改,所以它不会在配置更改时重新创建,但那没有做任何事情。 !!!!为什么果冻豆中的活动生命周期有一种奇怪的行为。你可以看到我的意思,只需创建一个简单的Android项目并创建两个活动,从第一个导航到活动,然后按回按钮,看到活动1上的日志onCreate将被调用!!!!

3 个答案:

答案 0 :(得分:4)

如果确定需要资源,操作系统不会随时终止您的后台活动。只是一个猜测,但在这些情况下可能会调用onCreate,因为系统会在您返回之前杀死第一个Activity。

修改:http://developer.android.com/guide/components/activities.html#Lifecycle

如果活动暂停或停止,系统可以通过要求它完成(调用其finish()方法)或简单地终止其进程来从内存中删除它。当活动再次打开时(在完成或杀死之后),必须全部创建它。

答案 1 :(得分:1)

以下是您的另一个参考:

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

在第一个链接中:

  

如果活动当前已停止且未长时间使用或前台活动需要更多资源,系统也可能会破坏您的活动,因此系统必须关闭后台进程才能恢复内存。

     

...

     

但是,如果系统因系统限制而破坏活动(而不是正常的应用程序行为),那么虽然实际的Activity实例已经消失,系统会记住它存在,如果用户导航回它,系统使用一组保存的数据创建活动的新实例,这些数据描述了活动在销毁时的状态。系统用于恢复先前状态的已保存数据称为“实例状态”,是存储在Bundle对象中的键值对的集合。

答案 2 :(得分:1)

  1. 打开手机设置屏幕
  2. 点击开发者选项(如果不存在,则按下约5-6次电话)
  3. 在“应用类别”中的“开发者”选项中,取消选中“不保留活动标志”