在AndroidManifest.xml中application中有一条属性是这样子的。
android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|layoutDirection|fontScale"
这个属性的作用是当这些属性变化的时候不会导致重新调用各个生命周期,而是运行如下函数
public void onConfigurationChanged(Configuration newConfig)
举一个例子
android:configChanges="orientation|screenSize"
当android:configChanges设置这两个属性之后,当屏幕切换横竖的时候,也就是从横屏切换为竖屏或者从竖屏切换为横屏的时候,Activity不会重新走一遍生命周期,而是仅仅执行Activity中的如下函数
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){
tv.setText("当前为横屏");
}else{
tv.setText("当前为竖屏");
}
}