android:configuration 处理屏幕旋转和语言切换等问题
来源:互联网 发布:淘宝客服怎么拿提成 编辑:程序博客网 时间:2024/04/30 12:31
原文地址:http://blog.csdn.net/liuweiballack/article/details/49800829
当APP设置为屏幕可旋转的时候,会发现在旋转屏幕的过程中,用户在EditText等控件中输入的内容会随之消失,这种情况同样发生在切换系统语言的时候。
打印APP的生命周期,当进行屏幕方向转换的时候,生命周期如图:
屏幕方向的转换,引起了Activity的重建,重新执行了onCreate( )方法。
由于数据没有保存,在Activity重建之后,数据丢失。
解决方法:
一、防止Activity重建
在AndroidManifest.xml中对Activity设置 Android:configChanges=”orientation|screenSize”,告诉系统在进行方向转换的时候,不要去销毁Activity并重建,直接调用onConfigurationChanged(Configuration newConfig)方法,由用户去进行处理,这就要求开发者在Activity中重写onConfigurationChanged(Configuration newConfig)方法,将改变方向需要做的处理写到onConfigurationChanged(Configuration newConfig)中,比如在屏幕方向转变的时候进行布局的切换。
这时候在进行方向转换的时候,不会在进行生命周期的变化,而是直接调用了onConfigurationChanged()方法。如图
二、允许Activity重建
如果允许Activity重建,则需要开发者对重建Activity前后的数据进行保存,保存数据时,重写onSaveInstanceState(Bundle outState)方法,将数据以键值对的方式保存;恢复数据时,重写onRestoreInstanceState(Bundle savedInstanceState)方法,或者在onCreate()方法中判断onSaveInstanceState是否为空,不为空时则表明该Activity是被Destroy的而重建的,利用savedInstanceState取出保存的数据。
这两个方法由系统调用,调用时机如图:
android:configChanges中可设置的属性较多,具体介绍可参照android官方文档:
http://developer.android.com/guide/topics/manifest/activity-element.html
注意:
在设置语言切换属性的时候,在4.2系统之前,只需要设置为
- 1
- 1
但是在4.2之后,需要同时设置layoutDirection,即
- 1
- 1
否则仍会导致Activity的重建。
- android:configuration 处理屏幕旋转和语言切换等问题
- android:configuration 处理屏幕旋转和语言切换等问题
- Android屏幕旋转和Configuration的使用
- android横竖屏切换布局处理及屏幕旋转处理
- Android屏幕切换处理
- Android 屏幕旋转问题
- Android 屏幕旋转问题
- Android 屏幕旋转问题
- Android 屏幕旋转的处理
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- Android 屏幕旋转 处理 AsyncTask 和 ProgressDialog 的最佳方案
- 常量放在java接口里还是java类里的问题
- 初识Servlet
- Mongdb 3.2 复制集配置 官方默认配置 无认证 Windows环境
- 页式存储管理(模拟操作系统)
- Android 内存优化-常见内存泄露
- android:configuration 处理屏幕旋转和语言切换等问题
- 1. C++新增加了bool类型
- 2016个人年终总结
- mysql 5.7 的安装
- 邮箱校验华为
- 如何在Linux上安装Composer
- 使用dcm4che3解析DICOM中,中文乱码问题
- CSS3 选择器——属性选择器
- java中的hashmap与hashtable的区别