关于android状态保存 onSaveInstanceState

      写了一年的安卓程序,第一次写博客,如是你看到勿喷。不是大神,只是热爱。

     关于安卓的状态保存的意义不累赘,

     只分享状态的保存的 使用的一些细节注意事项:


onSaveInstanceState的执行时间执行条件

             1,执行条件,

     * Called to retrieve per-instance state from an activity before being killed
     * so that the state can be restored in {@link #onCreate} or
     * {@link #onRestoreInstanceState} (the {@link Bundle} populated by this   method
     * will be passed to both).

       保存状态在被杀死之前,为了这个状态被回复在onCreate和onRestoreInstanceState的方法中,

       onRestoreInstanceState方法在首次onCreate事并不会被执行,只有 运行时 内存不足 杀死activity后 从新回到 activity的时候 才会被执行 该方法


     *
     *

This method is called before an activity may be killed so that when it
     * comes back some time in the future it can restore its state.  For example,
     * if activity B is launched in front of activity A, and at some point activity
     * A is killed to reclaim resources, activity A will have a chance to save the
     * current state of its user interface via this method so that when the user
     * returns to activity A, the state of the user interface can be restored
     * via {@link #onCreate} or {@link #onRestoreInstanceState}.

    

     *
     *

Do not confuse this method with activity lifecycle callbacks such as
     * {@link #onPause}, which is always called when an activity is being placed
     * in the background or on its way to destruction, or {@link #onStop} which
     * is called before destruction.  One example of when {@link #onPause} and
     * {@link #onStop} is called and not this method is when a user navigates back
     * from activity B to activity A: there is no need to call {@link #onSaveInstanceState}
     * on B because that particular instance will never be restored, so the
     * system avoids calling it.  An example when {@link #onPause} is called and
     * not {@link #onSaveInstanceState} is when activity B is launched in front of activity A:
     * the system may avoid calling {@link #onSaveInstanceState} on activity A if it isn't
     * killed during the lifetime of B since the state of the user interface of
     * A will stay intact.


     大致意思是 不要认为这个方法一定会在onPause和onStop之间调用,如过是你自己主动终止结束这个activity将不会执行这个方法,因为你确定要关闭finish不需要保存任何状 态;

    


   总结来说,这个方法只会在activity将要进入 安卓堆栈第二层的时候 执行 ,目的是当系统资源不足,运行时 回收内存,杀死activty时保存状态,当activity被回退执行onCreate和onRestoreInstanceState时回复之前的状态;


    2,执行时间:

      安卓高级开发一书上说是在onpause之前执行,话说尽信书 不如无书,实际运行发现,是在onpause和onstop之前执行,而且在onpause执行完大概有1s的延迟时间,

可以安全的认为该方法在进程终止之前一定被调用。

     


你可能感兴趣的:(安卓源代码)