闲来无事看了些android笔试题,如下:   对一些资源以及状态的操作保存,最好是保存在生命周期的哪个函数中进行() 
   A、onPause() B、onCreate() C、 onResume() D、onStart()    按我的理解答案应该是C,因为根据activity生命周期图来看,无论activity是pause还是stop,重新启动的时候,onResume()方法是必须调用的,所以理应在onResume()中保存好些,为什么网上公布的答案是D,onStart()方法在activity暂停pause重新获得焦点的时候并不调用求解释~

解决方案 »

  1.   

    状态保存,,,不应该在onPause么onResume怎么保存状态啊。。才开始显示,用户还正开始操作,有什么状态可以保存啊。。
      

  2.   

    你可以看看这里: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). 
      

  3.   

    保存状态是要在程序不可见时完成的, 当程序重新可见时需要做的操作时读取之前保存的状态。
    就是说在onPause中保存状态,在onResume中重新加载状态。
      

  4.   

    这个问题 我也看了网上的一些面试。答案是不正确的。应该是选择A的。具体的 你应该好好去了解下android那就种生命周期的方法。
      

  5.   

    其实我觉得这道题目本身就有歧义
        因为如果程序正常pause正常stop的话,用onPause()保存游戏变量是没问题的,适合持久性数据的保存,
    比如按返回按钮退出应用,保存游戏状态情况下。但是在某些情况下是不合适的,比如说当程序的activity不在栈顶时候,恰好系统内存不足了,就会销毁后台某个不可见的activity,将该activity彻底从内存中销毁,这个时候是不调用onPause()方法的,这个时候保存游戏状态的方法是调用onSaveInstance()。这种方式是用bundle保存在内存中,然后在下次启动activity的时候,onCreate(bundle)参数中的bundle就是刚保存的bundle对象,所以这种情况适合保存临时性数据状态。单纯从这点来看,在onStart()或者onResume()保存状态也是可以的,但是楼上那哥们说的好,activity还没获得焦点没来得及跟用户交互怎么个保存状态
       所以说,这题目有点水。。 
      

  6.   

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

  7.   

    嗯,还需分情况对待,一般情况下可以在onPause中保存。