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)会被执行多次,并不是只有一次。
分享到:
相关推荐
首先,`onSaveInstanceState`方法接收一个Bundle参数,通常被称为`outState`。在这个方法中,你可以将任何你需要保存的活动状态(如UI控件的值)放入这个Bundle中。例如,如果你有一个EditText控件,你可以这样做: ...
在这个过程中,系统会调用`onSaveInstanceState(Bundle outState)`,让你有机会将需要保留的数据放入Bundle中。 **2. Bundle对象** `outState`参数是一个Bundle对象,它是一个键值对的容器,可以用来存储各种类型...
1. **onSaveInstanceState(Bundle outState)**:当系统需要销毁Fragment或Activity(例如,设备旋转、系统内存不足等)时,会调用此方法。在这里,开发者可以将需要保留的UI状态,比如EditText的文字内容,Spinner的...
默认情况下,Fragment并不会自动保存其内部状态,因此需要开发者手动调用`onSaveInstanceState(Bundle outState)`方法来保存关键数据,并在`onCreate(Bundle savedInstanceState)`或`onActivityCreated(Bundle ...
`onSaveInstanceState(Bundle outState)` 是一个生命周期方法,它会在Activity或Fragment进入不可见状态之前被调用,例如在暂停(`onPause()`)或停止(`onStop()`)之前。但请注意,如果用户手动关闭Activity或...
当设备配置改变或者用户离开Fragment时,系统会调用onSaveInstanceState(Bundle outState)方法,允许开发者保存Fragment的状态。在这个方法中,我们可以将关键数据保存到Bundle对象中,以便在Fragment重建时恢复。 ...
每个Fragment都有`onSaveInstanceState(Bundle outState)`和`onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)`方法,可以用来保存和恢复Fragment的状态。当Activity重建时...
同时,当Activity正常结束或在`onSaveInstanceState(Bundle outState)`方法被调用时,我们应该保存这些状态到`outState`: ```java @Override protected void onSaveInstanceState(Bundle outState) { super....
为保存状态,需重写onSaveInstanceState(Bundle outState)方法,如保存long型变量: ```java protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putLong(...
`onSaveInstanceState(Bundle outState)`方法用于在Activity即将被销毁之前保存其状态。开发者可以在这个方法中将关键数据以键值对的形式存入`outState`,如用户的位置、界面控件的状态等。例如,如果用户正在阅读一...
当后台Activity被系统回收时,为了保存当前状态,可以重写`onSaveInstanceState(Bundle outState)`方法来保存关键数据。系统会在Activity销毁前调用这个方法,将数据保存在Bundle中,当Activity重新创建时可以通过`...
当Activity被系统回收时,为了保持状态,我们需要在`onSaveInstanceState(Bundle outState)`中保存关键数据,并在`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState(Bundle savedInstanceState)`中...
当后台Activity被系统回收时,我们需要在`onSaveInstanceState(Bundle outState)`中保存重要状态,以便在Activity重建时恢复。例如: ```java @Override protected void onSaveInstanceState(Bundle outState) { ...
当后台Activity因内存不足被回收时,可以通过`onSaveInstanceState(Bundle outState)`方法保存状态。系统会在回收前调用此方法,将关键数据保存在Bundle中,例如: ``` protected void onSaveInstanceState...
1. `onSaveInstanceState(Bundle outState)`: 当系统准备销毁Activity时调用此方法,可以在此时将重要数据保存到Bundle对象outState中。 2. `onCreate(Bundle savedInstanceState)` 和 `onRestoreInstanceState...
在Activity销毁之前,开发者可以通过重写`onSaveInstanceState(Bundle outState)`方法来保存关键数据。`outState`参数是一个Bundle对象,可以用来存储任何可序列化的数据,如基本类型、字符串、数组、集合或自定义...
当系统准备销毁一个Fragment时,会调用`onSaveInstanceState(Bundle outState)`方法,让你有机会保存Fragment的状态信息。`outState`参数是一个Bundle对象,可以用来存储键值对,将数据暂存起来。例如,你可以在这里...
首先,我们需要在活动中覆盖`onSaveInstanceState(Bundle outState)`方法。在这个方法中,我们通常会将需要保存的数据放入`outState`这个Bundle对象中。例如,在给定的代码片段中,开发者正在保存VideoView当前的...
对于可能被系统回收的后台Activity,我们需要在`onSaveInstanceState(Bundle outState)`方法中保存关键数据,以便在Activity重新创建时恢复状态。例如,我们可以将一个ID保存在Bundle中: ```java protected void ...
当Activity被系统销毁(例如屏幕旋转)时,可以通过`onSaveInstanceState()`保存`Bundle`,系统会在Activity重建时调用`onCreate()`或`onRestoreInstanceState()`传回这个`Bundle`: ```java @Override protected ...