Android onConfigurationChanged的作用
API原文说明:
android:configChanges
Lists configuration changes that the activity will handle itself. When a configuration change occurs at runtime, the activity is shut down and restarted by default, but declaring a configuration with this attribute will prevent the activity from being restarted. Instead, the activity remains running and its onConfigurationChanged() method is called.
Any or all of the following strings are valid values for this attribute. Multiple values are separated by '|' — for example, "locale|navigation|orientation".

All of these configuration changes can impact the resource values seen by the application. Therefore, when onConfigurationChanged() is called, it will generally be necessary to again retrieve all resources (including view layouts, drawables, and so on) to correctly handle the change.
在一些特殊的情况中,你可能希望当一种或者多种配置改变时避免重新启动你的activity。你可以通过在manifest中设置android:configChanges属性来实现这点。
你可以在这里声明activity可以处理的任何配置改变,当这些配置改变时不会重新启动activity,而会调用activity的
onConfigurationChanged(Resources.Configuration)方法。如果改变的配置中包含了你所无法处理的配置(在android:configChanges并未声明),
你的activity仍然要被重新启动,而onConfigurationChanged(Resources.Configuration)将不会被调用。
其次:android:configChanges=""中可以用的值:keyboard|mcc|mnc|locale|touchscreen|keyboardHidden|navigation|orientation……
Configuration 类中包含了很多种信息,例如系统字体大小,orientation,输入设备类型等等.(如上图)
比如:android:configChanges="orientation|keyboard|keyboardHidden"
当Configuration改变后,ActivityManagerService将会发送"配置改变"的广播,会要求ActivityThread 重新启动当前focus的Activity.
这是默认情况,我们不做任何处理,如果我们android:configChanges来配置Activity信息,那么就可以避免对Activity销毁再重新创建,而是调用
onConfigurationChanged方法。
通过查阅Android API可以得知android:onConfigurationChanged实际对应的是Activity里的onConfigurationChanged()方法。
在AndroidManifest.xml中添加上诉代码的含义是表示在改变屏幕方向、弹出软件盘和隐藏软键盘时,不再去执行onCreate()方法,
而是直接执行onConfigurationChanged()。如果不申明此段代码,按照Activity的生命周期,都会去执行一次onCreate()方法,而onCreate()方法通常会在显示之前做一些初始化工作。所以如果改变屏幕方向这样的操作都去执行onCreate()方法,就有可能造成重复的初始化,降低程序效率是必然的了,而且更有可能因为重复的初始化而导致数据的丢失。这是需要千万避免的。
参考:
Android学习笔记——关于onConfigurationChanged
http://www.cnblogs.com/wisekingokok/archive/2011/10/06/2199948.html
onConfigurationChanged信息处理 监听屏幕旋转 语言变换 键盘滑动
http://fghzhaopai.blog.163.com/blog/static/4780555620116882211560/
Android onConfigurationChanged的作用的更多相关文章
- android onConfigurationChanged讲解
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 相信大家对这个属性已经耳熟能详,如果大家受过转屏的折磨的话! 老规矩,先讲讲官方文档是怎么说的.为什 ...
- 转:onConfigurationChanged的作用
API原文说明:android:configChangesLists configuration changes that the activity will handle itself. When ...
- android onConfigurationChanged的那点事
Android学习笔记——关于onConfigurationChanged 从事Android开发,免不了会在应用里嵌入一些广告SDK,在嵌入了众多SDK后,发现几乎每个要求在AndroidMan ...
- Android中Handler作用
在Android的UI开发中,我们经常会使用Handler来控制主UI程序的界面变化.有关Handler的作用,我们总结为:与其他线程协同工作,接收其他线程的消息并通过接收到的消息更新主UI线程的内容 ...
- xml文件中 android:showAsAction = " " 的作用
在xml文件中设置android:showAsAction = " "有什么作用呢 安卓开发项目文件中有一个目录叫做menu,里面有main.xmlitem选项里有一句 andro ...
- Android onConfigurationChanged(Configuration cfg) 无法触发问题
1.android:configChanges="orientation|keyboardHidden"的使用 当在activity加上android:configChange ...
- Android xmlns 的作用及其自定义
转自:http://blog.csdn.net/chuchu521/article/details/8052855 xmlns:Android="http://schemas.android ...
- Android onConfigurationChanged 收不到回调
我返现,90度横屏 旋转到270度横屏onConfigurationChanged 是收不到回掉的.尽管清单里面声明了什么: android:configChanges="orientati ...
- Android onConfigurationChanged用法(规避横竖屏切换导致的重新调用onCreate方法)
onConfigurationChanged的目的是为了规避横竖屏切换干掉activity而重新调用onCreate方法的问题:有的时候,我们希望重新进入OnCreate生命周期,此时可以调用onSa ...
随机推荐
- php学习笔记——日期和时间
一.time() 来取得服务器当前时间的时间戳 UNIX 时间戳(timestamp)是 PHP 中关于时间日期一个很重要的概念,它表示从 1970年1月1日 00:00:00 到当前时间的秒数之和. ...
- 鼠标形状css样式
鼠标形状css样式 <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- JUnit——(一)使用IDEA进行基本操作
JUnit是一个回归测试框架(regression testing framework).Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(Wh ...
- mac 搭建node 开发环境记录
安装homebrew: enter 键 后 输入电脑密码 ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/i ...
- [DP优化方法之虚树]
首先我们看一篇文章 转自xyz: 给出一棵树. 每次询问选择一些点,求一些东西.这些东西的特点是,许多未选择的点可以通过某种方式剔除而不影响最终结果. 于是就有了建虚树这个技巧..... 我们可以用l ...
- iOS-OC对象模型
原文:http://blog.csdn.net/fanyiyao980404514/article/details/44864663 在C++的内存模型中我们知道,我们通过虚函数列表来存储虚函数的虚拟 ...
- unity笔录
----------------------------unity项目在启动splash的时候黑屏 原因不明------------------测试复制项目 用剔除法测试 笔录开始 先用原版本打包 ...
- 在MVC里使用 HttpContext.Response输出内容
public ActionResult About() { byte[] ss = System.Text.Encoding.UTF8.GetBytes("111122"); Ht ...
- readline与readlines不能同时使用
fd = open("C:\Users\william\Desktop\dup_file - Copy (2).txt")for i in xrange(0,len(fd.read ...
- java导出数据Excel总结
//创建获取到JFileChooser的文件名的JTextField public JTextField getTextField(Container c){ JTextField textField ...