`
handsomeliuyang
  • 浏览: 314900 次
  • 性别: Icon_minigender_1
  • 来自: 益阳
社区版块
存档分类
最新评论

onSaveInstanceState(Bundle outState)的调用时机

 
阅读更多

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调用的小例子

    首先,`onSaveInstanceState`方法接收一个Bundle参数,通常被称为`outState`。在这个方法中,你可以将任何你需要保存的活动状态(如UI控件的值)放入这个Bundle中。例如,如果你有一个EditText控件,你可以这样做: ...

    onSaveInstanceState保存数据demo

    在这个过程中,系统会调用`onSaveInstanceState(Bundle outState)`,让你有机会将需要保留的数据放入Bundle中。 **2. Bundle对象** `outState`参数是一个Bundle对象,它是一个键值对的容器,可以用来存储各种类型...

    fragment保存状态

    1. **onSaveInstanceState(Bundle outState)**:当系统需要销毁Fragment或Activity(例如,设备旋转、系统内存不足等)时,会调用此方法。在这里,开发者可以将需要保留的UI状态,比如EditText的文字内容,Spinner的...

    Android-StatedFragment-保存Fragment的状态

    默认情况下,Fragment并不会自动保存其内部状态,因此需要开发者手动调用`onSaveInstanceState(Bundle outState)`方法来保存关键数据,并在`onCreate(Bundle savedInstanceState)`或`onActivityCreated(Bundle ...

    Android中用onSaveInstanceState保存Fragment状态的方法

    `onSaveInstanceState(Bundle outState)` 是一个生命周期方法,它会在Activity或Fragment进入不可见状态之前被调用,例如在暂停(`onPause()`)或停止(`onStop()`)之前。但请注意,如果用户手动关闭Activity或...

    android FragmentActivity 保存fargment状态

    当设备配置改变或者用户离开Fragment时,系统会调用onSaveInstanceState(Bundle outState)方法,允许开发者保存Fragment的状态。在这个方法中,我们可以将关键数据保存到Bundle对象中,以便在Fragment重建时恢复。 ...

    Android Activity内嵌Fragment,当Activity recreate时Fragment被添加多次,造成界面重叠

    每个Fragment都有`onSaveInstanceState(Bundle outState)`和`onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)`方法,可以用来保存和恢复Fragment的状态。当Activity重建时...

    ConfirmRateLimitActivity.rar_Saved

    同时,当Activity正常结束或在`onSaveInstanceState(Bundle outState)`方法被调用时,我们应该保存这些状态到`outState`: ```java @Override protected void onSaveInstanceState(Bundle outState) { super....

    Android面试题精华全整理 -.doc

    为保存状态,需重写onSaveInstanceState(Bundle outState)方法,如保存long型变量: ```java protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putLong(...

    嵌入式程序开发

    `onSaveInstanceState(Bundle outState)`方法用于在Activity即将被销毁之前保存其状态。开发者可以在这个方法中将关键数据以键值对的形式存入`outState`,如用户的位置、界面控件的状态等。例如,如果用户正在阅读一...

    张泽华Android面试题整理

    当后台Activity被系统回收时,为了保存当前状态,可以重写`onSaveInstanceState(Bundle outState)`方法来保存关键数据。系统会在Activity销毁前调用这个方法,将数据保存在Bundle中,当Activity重新创建时可以通过`...

    android面试宝典

    当Activity被系统回收时,为了保持状态,我们需要在`onSaveInstanceState(Bundle outState)`中保存关键数据,并在`onCreate(Bundle savedInstanceState)`或`onRestoreInstanceState(Bundle savedInstanceState)`中...

    2023年android面试宝典.doc

    当后台Activity被系统回收时,我们需要在`onSaveInstanceState(Bundle outState)`中保存重要状态,以便在Activity重建时恢复。例如: ```java @Override protected void onSaveInstanceState(Bundle outState) { ...

    面试整理题

    当后台Activity因内存不足被回收时,可以通过`onSaveInstanceState(Bundle outState)`方法保存状态。系统会在回收前调用此方法,将关键数据保存在Bundle中,例如: ``` protected void onSaveInstanceState...

    android activity状态保存

    1. `onSaveInstanceState(Bundle outState)`: 当系统准备销毁Activity时调用此方法,可以在此时将重要数据保存到Bundle对象outState中。 2. `onCreate(Bundle savedInstanceState)` 和 `onRestoreInstanceState...

    037集-Activity纵横屏切换的数据保存与恢复

    在Activity销毁之前,开发者可以通过重写`onSaveInstanceState(Bundle outState)`方法来保存关键数据。`outState`参数是一个Bundle对象,可以用来存储任何可序列化的数据,如基本类型、字符串、数组、集合或自定义...

    android fragment 保存状态

    当系统准备销毁一个Fragment时,会调用`onSaveInstanceState(Bundle outState)`方法,让你有机会保存Fragment的状态信息。`outState`参数是一个Bundle对象,可以用来存储键值对,将数据暂存起来。例如,你可以在这里...

    Android 中 onSaveInstanceState()使用方法详解

    首先,我们需要在活动中覆盖`onSaveInstanceState(Bundle outState)`方法。在这个方法中,我们通常会将需要保存的数据放入`outState`这个Bundle对象中。例如,在给定的代码片段中,开发者正在保存VideoView当前的...

    2018网龙Android面试题整理.doc

    对于可能被系统回收的后台Activity,我们需要在`onSaveInstanceState(Bundle outState)`方法中保存关键数据,以便在Activity重新创建时恢复状态。例如,我们可以将一个ID保存在Bundle中: ```java protected void ...

    Android应用源码之Bundle.zip

    当Activity被系统销毁(例如屏幕旋转)时,可以通过`onSaveInstanceState()`保存`Bundle`,系统会在Activity重建时调用`onCreate()`或`onRestoreInstanceState()`传回这个`Bundle`: ```java @Override protected ...

Global site tag (gtag.js) - Google Analytics