闲来无事看了些android笔试题,如下: 对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行()
A、onPause() B、onCreate() C、 onResume() D、onStart() 按我的理解答案应该是C,因为根据activity生命周期图来看,无论activity是pause还是stop,重新启动的时候,onResume()方法是必须调用的,所以理应在onResume()中保存好些,为什么网上公布的答案是D,onStart()方法在activity暂停pause重新获得焦点的时候并不调用求解释~
A、onPause() B、onCreate() C、 onResume() D、onStart() 按我的理解答案应该是C,因为根据activity生命周期图来看,无论activity是pause还是stop,重新启动的时候,onResume()方法是必须调用的,所以理应在onResume()中保存好些,为什么网上公布的答案是D,onStart()方法在activity暂停pause重新获得焦点的时候并不调用求解释~
解决方案 »
- 有人知道这是怎么回事吗
- ArrayList数组越界问题
- 搞C++的去做android会不会很难?
- 多组同样结构的数值,怎样用listview显示
- 如何从一个Activity中将Bitmap实例传到下一个Activity?
- 求android手机开发测试用机的型号~以及购买测试用机时要注意什么?求指教,提前谢过~~!
- 请问做一个手机阅读器书籍的在线下载请问要注意什么?
- 请高手帮忙,android 同步问题, 在我的contact sync的时候
- eclispe 自动提示那个 出错了
- Android中Message中的一些问题
- Android 播放网络 H264 Streaming
- 关于android 视频录制,视频清晰度问题..求解
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).
就是说在onPause中保存状态,在onResume中重新加载状态。
因为如果程序正常pause正常stop的话,用onPause()保存游戏变量是没问题的,适合持久性数据的保存,
比如按返回按钮退出应用,保存游戏状态情况下。但是在某些情况下是不合适的,比如说当程序的activity不在栈顶时候,恰好系统内存不足了,就会销毁后台某个不可见的activity,将该activity彻底从内存中销毁,这个时候是不调用onPause()方法的,这个时候保存游戏状态的方法是调用onSaveInstance()。这种方式是用bundle保存在内存中,然后在下次启动activity的时候,onCreate(bundle)参数中的bundle就是刚保存的bundle对象,所以这种情况适合保存临时性数据状态。单纯从这点来看,在onStart()或者onResume()保存状态也是可以的,但是楼上那哥们说的好,activity还没获得焦点没来得及跟用户交互怎么个保存状态
所以说,这题目有点水。。
例如弹出一个 设置状态,这时候背景Activity是可见的,所以不会调用onStop, onStart。
设置完状态后返回时又要生效,需要在onResume中重新读状态;如果有些需要读取的状态在onStart之后修改过但没有保存,所以需要在onPause时保存。