求教一道关于android生命周期的题

混少年 2012-09-20 03:23:20
闲来无事看了些android笔试题,如下:

对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行()
A、onPause() B、onCreate() C、 onResume() D、onStart()

按我的理解答案应该是C,因为根据activity生命周期图来看,无论activity是pause还是stop,重新启动的时候,onResume()方法是必须调用的,所以理应在onResume()中保存好些,为什么网上公布的答案是D,onStart()方法在activity暂停pause重新获得焦点的时候并不调用。。。求解释~
...全文
1179 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
混少年 2012-09-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

onPause中保存状态,onResume读取状态。
例如弹出一个 设置状态,这时候背景Activity是可见的,所以不会调用onStop, onStart。
设置完状态后返回时又要生效,需要在onResume中重新读状态;如果有些需要读取的状态在onStart之后修改过但没有保存,所以需要在onPause时保存。
[/Quote]
没那么简单。。。你去看看楼上我回复的
ameyume 2012-09-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
引用 7 楼 的回复:

onPause中保存状态,onResume读取状态。
例如弹出一个 设置状态,这时候背景Activity是可见的,所以不会调用onStop, onStart。
设置完状态后返回时又要生效,需要在onResume中重新读状态;如果有些需要读取的状态在onStart之后修改过但没有保存,所以需要在onPause时保存。

没那么简单。。。你去看看楼上我回复的
[/Quote]
嗯,还需分情况对待,一般情况下可以在onPause中保存。
wodetuteng 2012-09-23
  • 打赏
  • 举报
回复
我一眼就看着是A,楼猪选的有点扯
ameyume 2012-09-22
  • 打赏
  • 举报
回复
onPause中保存状态,onResume读取状态。
例如弹出一个 设置状态,这时候背景Activity是可见的,所以不会调用onStop, onStart。
设置完状态后返回时又要生效,需要在onResume中重新读状态;如果有些需要读取的状态在onStart之后修改过但没有保存,所以需要在onPause时保存。
混少年 2012-09-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

我也觉得是A
[/Quote]
其实我觉得这道题目本身就有歧义
因为如果程序正常pause正常stop的话,用onPause()保存游戏变量是没问题的,适合持久性数据的保存,
比如按返回按钮退出应用,保存游戏状态情况下。但是在某些情况下是不合适的,比如说当程序的activity不在栈顶时候,恰好系统内存不足了,就会销毁后台某个不可见的activity,将该activity彻底从内存中销毁,这个时候是不调用onPause()方法的,这个时候保存游戏状态的方法是调用onSaveInstance()。这种方式是用bundle保存在内存中,然后在下次启动activity的时候,onCreate(bundle)参数中的bundle就是刚保存的bundle对象,所以这种情况适合保存临时性数据状态。单纯从这点来看,在onStart()或者onResume()保存状态也是可以的,但是楼上那哥们说的好,activity还没获得焦点没来得及跟用户交互怎么个保存状态。。。
所以说,这题目有点水。。
android_Y 2012-09-21
  • 打赏
  • 举报
回复
我也觉得是A
yang20613529 2012-09-21
  • 打赏
  • 举报
回复
这个问题 我也看了网上的一些面试。答案是不正确的。应该是选择A的。具体的 你应该好好去了解下android那就种生命周期的方法。
牟蘑菇 2012-09-20
  • 打赏
  • 举报
回复
保存状态是要在程序不可见时完成的, 当程序重新可见时需要做的操作时读取之前保存的状态。
就是说在onPause中保存状态,在onResume中重新加载状态。
混少年 2012-09-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

状态保存,,,不应该在onPause么。。。onResume怎么保存状态啊。。才开始显示,用户还正开始操作,有什么状态可以保存啊。。
[/Quote]
你可以看看这里:http://topic.csdn.net/u/20120903/10/7222aec2-ccde-40d5-a1c4-983147553a66.html
onStart,告诉你们头activity的生命周期中有个方法叫onRestoreInstanceState
文档这么说的

This method is called after onStart() when the activity is being re-initialized from a previously saved state, given here in savedInstanceState. Most implementations will simply use onCreate(Bundle) to restore their state, but it is sometimes convenient to do it here after all of the initialization has been done or to allow subclasses to decide whether to use your default implementation. The default implementation of this method performs a restore of any view state that had previously been frozen by onSaveInstanceState(Bundle).
Marco_Lee 2012-09-20
  • 打赏
  • 举报
回复
状态保存,,,不应该在onPause么。。。onResume怎么保存状态啊。。才开始显示,用户还正开始操作,有什么状态可以保存啊。。

80,371

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧