Activity的方法onSaveInstanceState(Bundle outState),按照文档里说的,这个方法是在内存不够时,系统要强制杀掉这个Activity时,进行调用的。
但经过我的测试,发现这个方法并不是在系统内存不够时,要杀掉Activity时,才调用的。
测试结果:
1. 只要Activity不finish,Activity进入后台(比如Home键,跳转到其他的Activity),则其就会调用onSaveInstanceState(Bundle outState)方法,而且这个方法是在onPause方法之间进行调用的。
2. 如果Activity是执行了finish方法,才进入的后台,则不调用这个onSaveInstanceState(Bundle outState),而且下次再进入时,也不会使用这个保存的数据。
3. 在系统杀掉Activity所在的进程时,onSaveInstanceState(Bundle outState)方法根本就没有调用过。
总结:系统在杀进程时,不可能有时间去执行多余的代码,也只有这种方法,才能保存Activity里的最新数据,所以onSaveInstanceState(Bundle outState)会被执行多次,并不是只有一次。
分享到:
相关推荐
protected void onSaveInstanceState Bundle outState { super onSaveInstanceState outState ; outState putBoolean "isFastScroll" isFastScroll ; outState putBoolean "addPadding" ...
通过这个例子描述onSaveInstanceState何时调用。非常简单的小例子。
protected void onSaveInstanceState(Bundle outState) { outState.putString(AWESOME_STRING, mAwesomeString); outState.putInt(AWESOME_INT, mAwesomeInt); super.onSaveInstanceState(outState); } And then ...
protected void onSaveInstanceState(Bundle outState) { outState.putInt(currentposition, videoView.getCurrentPosition()); super.onSaveInstanceState(outState); } public void onCreat
public class VideoActivity extends AppCompatActivity implements ... public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); isFinish = false; mRecorderView.stop(); }
onSaveInstanceState(Bundle outState) :Activity 即将销毁时保存数据 onRestoreInstanceState(Bundle savedInstanceState) : Activity 重建或者恢复时候取出数据 横竖屏切换生命周期 1、启动程序进入Activity界面...
主要介绍了Android onSaveInstanceState和onRestoreInstanceState触发的时机的相关资料,需要的朋友可以参考下
皮带支持在Android上更改方向时保留对象的注释。介绍注释活动或片段中的字段,以在配置发生更改时保留它们。 public class ExampleActivity ... } @Override protected void onSaveInstanceState(Bundle outState) {
切换横竖屏,如何保存数据
No boilerplate code like onSaveInstanceState or onRestoreInstanceState any more. Getting started Just add the @AutoRestore annotation to your fields that need to be saved and restored in Activities, ...
在Fragment里面,利用onSaveInstanceState保存数据,并可在onActivityCreated里面恢复数据。 public void onActivityCreated(Bundle savedInstanceState) { ...public void onSaveInstanceState(Bundle
联想与百度android的面试题合集 一 Activity的生命周期 二 让Activity变成一个窗口:Activity属性设定 三 你后台的Activity被系统 回收怎么办:onSaveInstanceState 四 调用与被调用:我们的通信使者 - Intent
1 Android build system 4 1.1 Basic 4 1.2 Executable 6 ...30.3 你后台的Activity被系统回收怎么办:onSaveInstanceState 115 30.4 调用与被调用:我们的通信使者Intent 116 31 编译Native C的helloworld 118
Android面试之---Activity的详细讲解 这篇文章会涉及到以下几个内容 一 Activity的生命周期 二 让Activity变成一个窗口:...四 调用与被调用:我们的通信使者 - Intent Android面试之---Android的虚拟机Dalvik 介绍
android 内存被回收是一个开发者的常见问题。当我们跳转到一个二级界面,或者切换到后台的时候,如果时间过长或者手机的内存不足,当我们再返回这个界面的时候,activity或fragment就会被内存回收。
Android中,Activity是所有程序的根本,所有程序的流程都运行在...void onCreate(Bundle savedInstanceState) void onStart() void onRestart() void onResume() void onPause() void onStop() void onDestroy()
如果 activity 的销毁如果无法避免 那么在activity销毁之前调用 onSaveInstanceState 保存图片的路径 当activity重新创建的时候 会将 onSaveInstanceState 保存的文件传递给onCreate()当中 在onCreate当中 检查照片...