`
xitongyunwei
  • 浏览: 926032 次
文章分类
社区版块
存档分类
最新评论

Activity状态的保存与恢复

 
阅读更多

一、临时性数据

首先说明一下一般控件的状态是不需要你写代码去保存的,因为Android框架中几乎所有UI控件都实现了onSaveInstanceState方法, 因此当Activity销毁和重建时, 这些UI控件会自动保存和恢复状态数据。当然你也不能什么都不做,你需要为这些控件指定一个id,剩下的事情框架会自己去做,如果你不指定id,那么控件的状态数据是不会自动保存和恢复的。

下面来详细说明一下onSaveInstanceStateonRestoreInstanceState这两个方法。

onSaveInstanceState调用的原则是系统有未经你的许可销毁Activity的可能。那么onSaveInstanceState有下面几种情况会调用:

1、按下HOME键(onPause-->onStop-->onStart-->onResume)

2、长按HOME键切换到了其他APP(onPause-->onStop-->onStart-->onResume)

3、横竖屏切换(onPause-->onStop-->onDestroy-->onCreate-->onStart-->onResume)

4、Activity的导航(onPause-->onStop-->onStart-->onResume)

5、锁定屏幕(锁定:onPause-->onStop,唤醒:onStart-->onResume)

onRestoreInstanceState被调用的原则是Activity被销毁了,而不是可能被销毁了

二、持久性数据

onResumeonPause方法中做,可以把数据保存在数据库或者SharedPreference中。然而在生命周期函数中不适合做耗时的操作,读者如果有好的方法保存较大的数据,欢迎评论。

分享到:
评论

相关推荐

    测试Activity状态保存和恢复

    用于测试Activity创建和销毁时,Activity状态的保存和销毁

    Android学习小结之Activity保存和恢复状态

    主要介绍了Activity状态保存和恢复的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下

    ZJ_InstanceState:实例状态演示

    1.Activity状态保存与恢复 2.Fragment状态保存与恢复

    retainstate

    发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务,以便恢复activity的状态。 为此,google提供了三种解决方案: 对于少量数据: 通过onSaveInstanceState(),保存有关...

    Android RetainFragment状态保存的方法

    一、常见的状态保存恢复方式 ①onSaveInstance + onRestoreInstance 这种方式是最通用的实现状态保存与恢复,在Android生态种,组件和View大量使用了此方式。 ②android:configChanges+onConfigurationChanged 这种...

    Android编程实现状态保存的方法分析

    本文实例讲述了Android编程实现状态保存的方法。分享给大家供大家参考,具体如下: 1、当我们正在发短信的时候,已经写了几百字了,这时突然来了一个电话,我们接完电话之后,如果发现辛辛苦苦的几百字不见了,那可...

    实例探究Android开发中Fragment状态的保存与恢复方法

    我们都知道,类似 Activity, Fragment 有 onSaveInstanceState() 回调用来保存状态。 在Fragment里面,利用onSaveInstanceState保存数据,并可在onActivityCreated里面恢复数据。 public void onActivityCreated...

    Android屏幕旋转 处理Activity与AsyncTask的最佳解决方案

    发生这些变化,Android会重启Activity,这时就需要保存activity的状态及与activity相关的任务,以便恢复activity的状态。 为此,google提供了三种解决方案: 对于少量数据: 通过onSaveInstanceState(),保存有关...

    Android-教程精华-开发

    次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState), 以及Activity之间的跳转和数据传输(intent)。 Activity中常用的函数有SetContentView() findViewById() finish() startActivity(),其...

    实验一Android环境构建与Activity生命周期.doc

    实验一Android环境构建与Activity生命周期 【目的】 安装智能手机开发相关软件平台,并在此基础上测试Activity的生命周期过程。 【要求】 1. 完成智能手机开发平台安装、以及相关配置; 2. 并实现Hello World; 3. ...

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

    在Fragment里面,利用onSaveInstanceState保存数据,并可在onActivityCreated里面恢复数据。 public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); ... ...

    Android task和back stack

    当一个activity停止时,系统保存了它的用户界的当前状态.当用户后退按钮时,当前的activity被从栈顶弹出(activity被销毁了)并且先前的activity被恢复了.栈中的Activities永不会被重新排列,只是入栈或出栈—当被当前...

    Android的Fragment的生命周期各状态和回调函数使用

    理解fragments的生命周期,可以使你在它们被销毁的时候保存它们的实例,这样在它们重新被创建的时候,就能恢复它们之前的状态。 流程: onAttach() 作用:fragment已经关联到activity,  这个是 回调函数 @...

    Android生存指南之:开发中的注意事项

    区域语言发生变化,屏幕尺寸发生变化等等,如果Activity没有声明处理这些事件,发生事件时,系统会把Activity杀掉然后重启,并尝试恢复状态,Activity有机会通过onSaveInstanceState()保存一些基本数据到Bundle中,...

    java源码屏幕刷新-android-breakout:适用于Android设备的突围游戏

    与Android应用程序框架的交互,包括Activity暂停/恢复时的游戏状态保存和恢复,以及屏幕旋转的处理。 将触摸事件转发到游戏循环。 特定于语言环境的抗锯齿文本的 GL 渲染。 (包括一个基本的西班牙语翻译。) 音效...

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    Activity Activity是一个应用程序组件,提供一个屏幕,用户可以用来交互为了完成某项任务,是一个负责与用户交互的组件 SSH 为 Struts+Spring+Hibernate的一个集成框架,是目前较流行的一种Web应用程序开源框架。...

    andriod精华学习教程

    次就是状态的保存和恢复(onSaveInstanceState onRestoreInstanceState), 以及Activity之间的跳转和数据传输(intent)。 Activity中常用的函数有SetContentView() findViewById() finish() startActivity(),其...

    ucsFramework:适用于Android的基于MVP的架构框架

    ucsFramework 一系列分层框架,为Android实现了两种用户界面架构模式。 框架被实现为一组库和两个注释处理器。...使用Ui状态保存注释处理器 UI组件中的字段可以在配置更改(旋转)之间自动保留和恢复。 这是引入Dag

Global site tag (gtag.js) - Google Analytics