`
quanminchaoren
  • 浏览: 924270 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android onSaveInstanceState和onRestoreInstanceState的用处

阅读更多

很多不明白Activity类中包含的onSaveInstanceState和onRestoreInstanceState有什么用,首先声明下使用这两个方法时一定要注意情况和了解Activity的生命周期 ,否则有的时候  onSaveInstanceState和onRestoreInstanceState 可能不会被触发,虽然他们都是Activity的重写方法。(文/Android 开发网)

他 们比较常用到的地方是 Sensor、Land和Port布局的自动切换,过去Android开发网曾经说过解决横屏和竖屏切换带来的数据被置空或者说onCreate被重复调 用问题,其实Android提供的onSaveInstanceState方法可以保存当前的窗口状态在即将布局切换前或当前Activity被推入历史 栈,其实布局切换也调用过onPause所以被推入Activity的history stack,如果我们的Activity在后台没有因为运行内存吃紧被清理,则切换回时会触发onRestoreInstanceState方法。

这两个方法中参数均为Bundle,可以存放类似 SharedPreferences 的数据,所以使用它们作为当前窗口的状态保存是比较合适的。实际使用代码

  1. @Override
  2.   protected void onSaveInstanceState(Bundle outState){
  3.             outState.putString("lastPath", "/sdcard/android123/cwj/test");
  4.   }


  5. @Override
  6. public void onRestoreInstanceState(Bundle savedInstanceState) {
  7. super.onRestoreInstanceState(savedInstanceState);

  8. String cwjString = savedInstanceState.getString("lastPath");
  9. }
分享到:
评论

相关推荐

    android应用源码yannihui(音乐播放器).zip

    10. **状态保存与恢复**:实现onSaveInstanceState和onRestoreInstanceState方法,确保应用在屏幕旋转等事件后能正确恢复状态。 11. **音乐播放算法**:如平滑过渡、随机播放、循环播放等功能的实现。 通过对这个...

    android生命周期

    除了这些基本状态,还有两个重要的过渡方法`onSaveInstanceState()`和`onRestoreInstanceState()`,用于在Activity改变配置(如屏幕旋转)时保存和恢复状态。`onSaveInstanceState(Bundle outState)`允许开发者保存...

    Android应用源码之(Body的m_userData).zip

    - `m_userData`的赋值和读取操作,特别是在生命周期方法如`onCreate()`, `onSaveInstanceState()`, `onRestoreInstanceState()`等中的处理。 - 如果`m_userData`是序列化的,那么查看其序列化和反序列化的方法。 - `...

    天津理工大学移动终端开发技术(安卓)期末考试复习题.docx

    本资源是天津理工大学移动终端开发技术(安卓)期末考试复习题,涵盖了安卓开发的基础知识点,包括双向调用、远程服务、可见进程、R.java 和 AndroidManifest.xml 文件的用途、Android 系统的四种基本组件、Activity...

    齐全的android面试题库.doc

    可以使用onSaveInstanceState(Bundle outState)来保存临时数据,而永久数据应存储在onCreate(Bundle savedInstanceState)或onRestoreInstanceState(Bundle savedInstanceState)中。 3. **Activity样式设置**:通过...

    android apidemos示例解析

    本文将对部分示例进行详细解析,帮助读者更好地理解和运用Android开发技术。 #### 示例解析 ##### (1) 创建ApiDemo示例 **创建过程**: - 打开Android Studio。 - 选择“Start a new Android Studio project”。 ...

    android面试题带答案[借鉴].pdf

    Android提供了多种布局管理器,包括LinearLayout(线性布局)、RelativeLayout(相对布局)、FrameLayout(帧布局)、GridLayout(网格布局)和ConstraintLayout(约束布局),每种布局都有其特定用途,如...

    应用源码之(Body的m_userData).zip

    在onSaveInstanceState()和onRestoreInstanceState()方法中,"m_userData"可以用来保存和恢复View的非默认状态。 2. **事件处理**: 当涉及到事件处理,如手势识别或触摸事件,"m_userData"可能用来携带事件相关的...

    Android_api_demo

    - **Intent**:详细解释 Intent 的用途和如何传递数据。 - **Activity 启动模式**:介绍不同的启动模式及其对 Activity 堆栈的影响。 ##### (8) App -> Activity -> HelloWorld - **概述**:一个简单的“Hello ...

    android中Intent传值与Bundle传值的区别详解

    此外,Bundle还有其他用途,比如在Activity的onSaveInstanceState()和onRestoreInstanceState()方法中保存和恢复Activity的状态,即使设备发生旋转等配置改变,也可以保留用户的数据。 总结来说,Intent主要用于...

    安卓UI布局相关-RearrangeableLayout可拖动的UI布局.rar

    6. **保存和恢复状态**:为了保证应用在配置变更或意外退出后仍能恢复到之前的状态,需要实现`onSaveInstanceState()` 和 `onRestoreInstanceState()` 方法,保存和恢复`RearrangeableLayout` 子视图的排列状态。...

    安卓开发的.docx

    - **HandlerThread** 是 Android 提供的一个特殊线程类,它继承自 `Thread` 类,主要用途是在子线程中处理消息。 - **特点**: - 自带 `Looper`,使得可以在子线程中处理消息队列。 - 避免了频繁创建线程带来的...

    android面试题

    在Android中,通常将Activity或Fragment视为Controller,布局文件视为View,而Model则负责数据管理和业务逻辑。 #### 16. ANR(Application Not Responding) - **定义**:当Activity超过5秒没有响应用户的输入时...

    一款很类似360悬浮框功能源码.zip

    9. **状态保存与恢复**:当应用被系统暂停或杀死后,悬浮窗的状态需要能够正确恢复,这涉及到`onSaveInstanceState`和`onRestoreInstanceState`方法的使用。 10. **安全性与兼容性**:为了确保源码在不同设备和...

    安卓面试题

    - **用途**:高效查找、插入和删除数据。 #### 40. 锁机制 - **同步锁**:synchronized关键字。 - **互斥锁**:ReentrantLock等。 #### 41. MVC作用 - **分离关注点**:将数据处理、界面展示和用户交互分离。 - **...

    Activity-Lifecycle-06

    此外,该项目可能还涵盖了如何处理配置变化(如屏幕旋转)时Activity的生命周期,以及如何使用onSaveInstanceState(Bundle)和onRestoreInstanceState(Bundle)来保存和恢复Activity的状态。 总之,深入理解Activity...

Global site tag (gtag.js) - Google Analytics