android设备设置改变时的数据保留和恢复
来源:互联网 发布:广电网络机顶盒安装app 编辑:程序博客网 时间:2024/05/22 11:39
1.利用其生命周期
如在onPause()中可以做一些储存数据,停止动画等工作,但是注意不能太耗时,因为这会影响到新Activity的显示,onPause必须先执行完,新的Activity才会启动(新的Activity的onResume才会执行)。
2.onSaveInstanceState(...)和onRestoreInstanceState(...)
onSaveInstanceState()的调用时机是在onStop()之前,但既可能在onPause()之前,也可能在onPause()之后。
onSaveInstanceState(...)只会在Activity被异常终止的情况下被回调,正常情况下系统不会回调这个方法。
每个View都有onSaveInstanceState和onRestoreInstanceState方法,系统会在activity被异常终止和恢复activity现场时自动恢复View组件的数据
当activity被重新创建时,onSaveInstanceState所保存的Bundle对象会作为参数同时传递给onRestoreInstanceState和onCreate方法。onRestoreInstanceState方法中获取到的Bundle对象一定是有值的,而onCreate中获取到的Bundle对象则要进行非空判断。
3.系统配置发生改变时数据的恢复
当系统配置,比如系统语言的变化,系统字体的缩放比例的变化,或者屏幕的横竖屏发生改变时,activity会被销毁并重新创建。
(1) 以下为解决因屏幕旋转而导致的Activity重建的问题:
禁止旋转屏幕,即指定当前Activity的屏幕方向,在AndroidManifest.xml中的activity中指定属性
android:screenOrientation="portrait"在Activity中添加configChanges属性并指定orientation这个值
android:configChanges="orientation|screenSize|keyboardHidden"多个值可用|连接。其中orientation表示屏幕方向的改变,screenSize表示屏幕的尺寸信息发生了改变,当编译选项的中的minSdkVersion或者targetSdkVersion中有一个的值大于13时,必须指定此项,keyboardHidden表示键盘的可访问性发生了改变,如用户调出了键盘。
另外还可以在activity中重写onConfigurationChanged(...)方法,如:
@Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { Log.i("Screen_orientation", "LANDSCAPE"); } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { Log.i("Screen_orientation", "PORTRAIT"); } }
(2)已被舍弃的方法,onRetainNonConfigurationInstance()
(3)通过设置activity内部的fragment方法,保留fragment对象
如果是以Activity托管Fragment的方式,可以通过调用Fragment的setRetainInstance(true)方法设置Fragment的属性,从而实现在系统配置发生改变以及Activity对象被销毁和重建时保留Fragment对象。
@Overridepublic void onCreate(Bundle saveInstanceState) {super.onCreate(onSavedInstanceState);setRetainInstanceState(true);}但是使用此方法,需记住,只有当activity因设备发生改变被销毁时fragment才会短时间处于被保留状态,如果activity是因操作系统需要回收内存而被销毁,则所有被保留的fragment也会被随之销毁。
- android设备设置改变时的数据保留和恢复
- Android设备恢复出厂设置的文件备份与恢复
- Android 系列 2.4用户旋转设备时保留数据
- Android客制化------恢复出厂设置但保留文件
- 移动设备改变IO,试图改变(数据的)存储和处理(CPU)
- 数据恢复设备
- 第五章:iOS取证和数据恢复 ——5.3 非越狱设备上的取证
- 第五章:iOS取证和数据恢复 ——5.4 设备上的pin暴力破解
- 第五章:iOS取证和数据恢复 ——5.5 越狱设备上的取证
- Android应用程序的Java数据更新和UI同步改变
- android -保存和恢复activity的状态数据
- android笔记--保存和恢复activity的状态数据
- android笔记--保存和恢复activity的状态数据
- android保存和恢复activity的状态数据
- android笔记--保存和恢复activity的状态数据
- android笔记--保存和恢复activity的状态数据
- android笔记--保存和恢复activity的状态数据
- android笔记--保存和恢复activity的状态数据
- HDU 5631 Rikka with Graph
- Java占据主要地位的原因
- windows基础编程----第二篇(创建属于自己的窗口)
- 阿里云配置日记
- Spark培训之计算员工薪资
- android设备设置改变时的数据保留和恢复
- 程序员的故事 001 小眼镜入职
- 运算符重载
- POJ 2774(后缀数组)
- HDU 5630 Rikka with Chess
- 2016.2.20 面试归来
- Android_Fragment
- android基础学习综合实例——天气预报App(基本功能实现)
- fishhook