【发布时间】:2011-07-29 03:23:19
【问题描述】:
我注意到 Android Developers Activity 部分在我启动应用程序后已经更新,但我仍然不清楚最简单的 Activity Lifecycle 是什么。
据我所知:
onCreate、onResume 和 onPause 是必不可少的。
活动可能在 onPause 之后的任何时间被删除,所以我应该将我的整个应用程序状态保存到文件 onPause 而不是依赖 onStop 或 onDestroy。此外,onSaveInstanceState 不会在每次 onPause 之前被调用,因此不值得使用。
与其尝试编写大量代码来处理所有场景,不如在其 onPause 结束时销毁 Activity?
生命周期将在它处于活动状态之前为 onCreate 和 onResume,然后在它变为非活动状态时为 onPause。不需要其他方法。
我会使用 onCreate 调用 setContentView 并设置视图侦听器,但其他所有内容都会放在 onResume 中,包括从文件加载恢复的状态? 如前所述,onPause 会将状态保存到文件并销毁活动。
据我所知,这样做的唯一缺点可能是当屏幕上出现弹出窗口时,活动被删除并且必须在弹出窗口关闭时重新创建,这意味着活动将在后面不可见弹出窗口(虽然我没有测试过)
重新启动活动可能需要更长的时间,但由于系统可能会在没有任何通知的情况下删除活动,因此您必须保存整个状态。
有什么想法吗?
更新: 我想我在想的是“首页”活动称为游戏活动的地方。当玩家点击“播放”时,首页活动将调用游戏活动
游戏活动将在 onCreate 中设置其视图和侦听器等,并在 onResume 中加载包含游戏状态的文件,或者如果不存在文件则启动新游戏。
游戏的onPause,它将游戏状态写入文件,然后无论游戏活动发生什么(什么都没有,或者被停止/销毁,或者其他什么),onResume 方法总是会再次从文件。
我就是这么想的,如果这有意义吗?
更新2: 我设计了一个简单的解决方案,如果有人感兴趣,我已经在下面的答案中记录了它!
它不支持 Android 活动生命周期“暂停”和“停止”状态。一旦它不再显示,它就会自行杀死并必须手动重新启动,但它确实会从你停止的地方继续!
【问题讨论】:
-
没有比Activities 文章中更简单的 Activity 生命周期描述了。
-
是的,Activities 文章确实清楚地解释了整个生命周期,但我试图确定制作一个能够处理整个生命周期的完整 App 所需的最少方法数。例如如果 onStop 可能永远不会被调用,为什么要实现它?
-
在 onPause() 之后可能会杀死 Activity 是否仍然是真的?请参阅:developer.android.com/training/basics/activity-lifecycle/… "...一旦您的活动停止,如果需要恢复系统内存,系统可能会销毁实例。..."
-
@Waterbear,在developer.android.com/reference/android/app/Activity.html中说onPause后仍然可以被系统销毁
-
这不是其他人已经回答的直接答案,但我邀请您查看LogLifeCycle 以了解您的 Android 应用程序在生命周期方面发生了什么。
标签: android android-activity lifecycle