关于android状态保存 onSaveInstanceState
2014-05-10 12:43
417 查看
写了一年的安卓程序,第一次写博客,如是你看到勿喷。不是大神,只是热爱。
关于安卓的状态保存的意义不累赘,
只分享状态的保存的 使用的一些细节注意事项:
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的时候 才会被执行 该方法
*
* <p>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}.
*
* <p>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的延迟时间,
可以安全的认为该方法在进程终止之前一定被调用。
关于安卓的状态保存的意义不累赘,
只分享状态的保存的 使用的一些细节注意事项:
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的时候 才会被执行 该方法
*
* <p>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}.
*
* <p>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的延迟时间,
可以安全的认为该方法在进程终止之前一定被调用。
相关文章推荐
- Android保存状态(onSaveInstanceState)与恢复状态(onRestoreInstanceState)
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析
- android 保存 Activity 状态 ==> onSaveInstanceState()
- android之生命周期onSaveInstanceState()状态保存
- Android中用onSaveInstanceState保存Fragment状态的方法
- android 状态保存onSaveInstanceState
- Android 状态保存 生命周期 onSaveInstanceState onRestoreInstanceState 方法
- Android中用onSaveInstanceState保存Fragment状态的方法
- android onSaveInstanceState方法 横坚屏切换的状态保存
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState参数解析
- Android翻译】关于Activity的onSaveInstanceState调用时机的说明
- 学习Activity保存状态的onSaveInstanceState方法
- 两种保存状态的方法getSharedPreferences和onSaveInstanceState
- Android 学习笔记之实时保存数据-现场保护onSaveInstanceState()
- onSaveInstanceState 非用户销毁Activity时,保存状态
- 保存activity状态的方法: onSaveInstanceState()
- Android 学习笔记之实时保存数据-现场保护 onSaveInstanceState()
- Android之onSaveInstanceState页面数据短暂保存
- Android 状态信息的记录onPause和onSaveInstanceState
- Android onSaveInstanceState、onRestoreInstanceState保存数据