`
zhenping
  • 浏览: 83614 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

Activity的onSaveInstanceState()和 onRestoreInstanceState()方法

 
阅读更多
 @Override
  protected void onRestoreInstanceState(Bundle savedState) {
    super.onRestoreInstanceState(savedState);
    mSeries = (CategorySeries) savedState.getSerializable("current_series");
    mRenderer = (DefaultRenderer) savedState.getSerializable("current_renderer");
  }

  @Override
  protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putSerializable("current_series", mSeries);
    outState.putSerializable("current_renderer", mRenderer);
  }


Activity的onSaveInstanceState()和onRestoreInstanceState()并不是生命周期方法,

它们不同于onCreate()、onPause()等生命周期方法,它们并不一定会被触发。

当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,

onSaveInstanceState()会被调用(由运行状态进入暂停状态或停止状态)

但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。

因为在这种情况下,用户的行为决定了不需要保存Activity的状态。

通常onSaveInstanceState()只适合用于保存一些临时性的状态,

而onPause()适合用于数据的持久化保存。

另外,当屏幕的方向发生了改变,Activity会被摧毁并且被重新创建,

如果你想在Activity被摧毁前缓存一些数据,并且在Activity被重新创建后恢复缓存的数据。


分享到:
评论

相关推荐

    Android onSaveInstanceState和onRestoreInstanceState触发的时机

    通过重写一个 Activity 的所有生命周期的 onXXX 方法,包括 onSaveInstanceState 和 onRestoreInstanceState 方法,我们可以清楚地知道当某个 Activity(假定为 Activity A)显示在当前 task 的最上层时,其 ...

    Android代码-自动帮你完成 onSaveInstanceState 和 onRestoreInstanceState 的相关操作

    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, ...

    用ActivityGroup解决TabHost中多个Activity跳转问题

    onCreateView用于加载子Activity的布局,onDestroyView则用于清理资源,而onSaveInstanceState和onRestoreInstanceState则用于保存和恢复子Activity的状态。 2. **启动子Activity**:在ActivityGroup中,我们需要...

    Android代码-svc

    "View" code and "Screen Code" such as onCreate,onCreateView, onViewCreated or onSaveInstanceState, onRestoreInstanceState.onActivityResult etc. It makes hard to see each "View Logic" and "Screen Logic...

    重建Activity-Recreating an Activity

    6. 理解和利用生命周期回调函数:Activity生命周期涉及多个回调函数,如onCreate(), onRestoreInstanceState(), 和onSaveInstanceState()。这些方法分别在Activity创建、恢复状态和保存状态时被系统调用。正确地实现...

    View的状态是如何保存的

    然后Activity的onSaveInstanceState、onRestoreInstanceState最终也会调用到控件的这两个同名方法。View的初始化时要调用setSaveEnabled(true) 。 另外,想要保存View的状态,需要在XML布局文件中提供一个

    andriod各个知识点.pdf

    onSaveInstanceState()和onRestoreInstanceState()是Activity生命周期中两个非常重要的方法。 onSaveInstanceState()会在以下情况被调用: * 从最近应用中选择运行其他的程序时。 * 当用户按下HOME键时。 * 屏幕...

    Activity栈的简单应用.rar

    8. **Activity的配置变更**:例如屏幕旋转会导致Activity重建,开发者可以通过配置文件或重写onSaveInstanceState和onRestoreInstanceState来处理配置变更。 9. **任务切换和多任务处理**:Android系统允许用户在多...

    onSaveInstanceState保存数据demo

    在Android应用开发中,`onSaveInstanceState()`是一个关键的方法,用于在应用的Activity或Fragment生命周期中保存用户界面的状态。这个方法通常在系统即将销毁一个组件(例如:屏幕旋转、后台进程被清理等)时调用,...

    activityGroup简单应用

    5. 存储和恢复状态:由于ActivityGroup内的Activity可能需要保存和恢复其状态,你需要处理onSaveInstanceState和onRestoreInstanceState方法,确保在配置更改(如屏幕旋转)时,Activity的状态能得到正确处理。...

    onSaveInstanceState调用的小例子

    在Android应用开发中,`onSaveInstanceState`是一个关键的方法,用于在应用程序的生命周期中保存活动(Activity)的状态。当系统需要销毁一个活动时,比如屏幕旋转、用户按下Home键或者系统资源紧张,它会调用`...

    ActivityandroidIntent详解.pdf

    Activity的状态保存和恢复是通过onSaveInstanceState和onRestoreInstanceState方法实现的。当Activity被销毁或由于系统原因需要暂时隐藏时,可以调用onSaveInstanceState方法来保存关键数据到Bundle对象中,然后在...

    Android Gallery+ActivityGroup实现滑动TAB独立Activity

    你需要重写onCreateView方法来返回子Activity的视图,以及onSaveInstanceState和onRestoreInstanceState来保存和恢复子Activity的状态。 3. 启动子Activity:当Gallery的选中项发生变化时,调用...

    Activity生命周期源代码

    开发者可以通过重写`onSaveInstanceState()`和`onRestoreInstanceState()`来保存和恢复Activity的状态。 - 使用`onActivityResult()`来处理一个Activity启动另一个Activity后返回的结果。 - `...

    测试Activity状态保存和恢复

    通过合理使用`onSaveInstanceState()`、`onCreate(Bundle savedInstanceState)`和`onRestoreInstanceState(Bundle savedInstanceState)`,以及充分的测试,开发者可以确保Activity在任何情况下都能正确地保存和恢复...

    android各组件详解-activity

    4. **保存和恢复状态**:在onSaveInstanceState()和onRestoreInstanceState()方法中保存和恢复Activity的状态,以确保应用在配置改变时能正确恢复。 总之,理解Activity的生命周期和如何有效地管理它是开发Android...

    Android的Activity周期测试

    onSaveInstanceState(Bundle outState)方法在Activity暂停之前调用,可以将当前状态数据保存到Bundle中。当Activity重新创建时,onCreate(Bundle savedInstanceState)或onRestoreInstanceState(Bundle ...

    全面解析Android应用开发中Activity类的用法

    - `onRestoreInstanceState(Bundle)`:当Activity恢复时,系统会调用此方法,以便恢复之前保存的状态。 了解和熟练掌握上述知识点对于Android开发者来说至关重要,因为Activity是构建用户界面和管理应用流程的基础...

    设备旋转与Activity生命周期

    例如,可以使用`onSaveInstanceState`和`onRestoreInstanceState`来保存和恢复游戏状态,或者通过配置变更不销毁Activity来避免不必要的重建。 总之,理解设备旋转对Activity生命周期的影响以及如何妥善处理这种...

Global site tag (gtag.js) - Google Analytics