有两种方法可以处理运行时更改。
1. Retain an object during a configuration change
2. Handle the configuration change yourself
1.在配置更改期间保留对象
如果您在配置更改期间保留一个对象,Android 将重新启动正在运行的 Activity 并调用 onDestroy(),然后调用 onCreate(),然后从那里调用所有其他对象:onStart()、onResume()、onStop()、onPause()等
但如果你想自己处理配置,第二种方式:
2。自行处理配置变更
如果您的应用程序在特定配置更改期间不需要更新资源并且您有性能限制要求您避免重新启动活动,那么您可以声明您的活动自己处理配置更改,这可以防止系统不会重新启动您的活动。
当您在清单 android:configChanges 属性中包含一个代表您要处理的配置的值时,就会发生这种情况。
例如:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:label="@string/app_name">
现在,当这些配置之一发生变化时,MyActivity 不会
重启。相反,MyActivity 收到一个调用
onConfigurationChanged()。这个方法被传递了一个配置
指定新设备配置的对象
例如,以下 onConfigurationChanged() 实现检查当前设备方向:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
// Checks the orientation of the screen
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
}
}
更多信息可以继续阅读Android Developers