android:configChanges="keyboard|keyboardHidden|orientation|screenSize"

<activity
android:name="xxxActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:launchMode="singleTask"

---launchMode为singleTask的时候,通过Intent启到一个Activity,如果系统已经存在一个实例,系统就会将请求发送到这个实例上,但这个时候,系统就不会再调用通常情况下我们处理请求数据的onCreate方法,而是调用onNewIntent方法

android:configChanges="xxx" 详解:

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法


VALUE                                     DESCRIPTION
"mcc"                                      国际移动用户识别码所属国家代号是改变了----- sim被侦测到了,去更新mcc mcc是移动用户所属国家代号
"mnc"                                      国际移动用户识别码的移动网号码是改变了------ sim被侦测到了,去更新mnc MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网
"locale"                                    地址改变了-----用户选择了一个新的语言会显示出来
"touchscreen"                           触摸屏是改变了------通常是不会发生的
"keyboard"                               键盘发生了改变----例如用户用了外部的键盘
"keyboardHidden"                     键盘的可用性发生了改变
"navigation"                             导航发生了变化-----通常也不会发生
"screenLayout"                         屏幕的显示发生了变化------不同的显示被激活
"fontScale"                               字体比例发生了变化----选择了不同的全局字体
"uiMode"                                  用户的模式发生了变化
"orientation"                             屏幕方向改变了
"screenSize"                             屏幕大小改变了
"smallestScreenSize"                 屏幕的物理大小改变了,如:连接到一个外部的屏幕上

ref:

(7)android:configChanges="orientation|keyboardHidden|navigation"_年轻至永远_新浪博客
http://blog.sina.com.cn/s/blog_132cad9990102w25i.html

横竖屏切换时,禁止activity从新创建,android:configChanges="keyboardHidden|orientation" 不起作用 - Android
http://www.myexception.cn/android/1643755.html

当Activity的launchMode设为singleTask的时候,你要注意了! - 蚂蚁的专栏 - 博客频道 - CSDN.NET
http://blog.csdn.net/caiwenfeng_for_23/article/details/46918743

原文地址:https://www.cnblogs.com/bluestorm/p/6251443.html