手动管理配置更改
如果你的应用程序在特定配置更改期间不需要更新资源,并且你有性能限制要求你避免重新启动活动,那么你可以声明你的活动自己处理配置更改,这会阻止系统重新启动活动。
但是,当你必须避免因配置更改而重新启动时,此技术应被视为最后的手段,并且不建议用于大多数应用程序。要采用这种方法,我们必须将 android:configChanges
节点添加到 AndroidManifest.xml 中的活动 :
<activity android:name=".MyActivity"
android:configChanges="orientation|screenSize|keyboardHidden"
android:label="@string/app_name">
现在,当其中一个配置发生更改时,活动不会重新启动,而是接收对 onConfigurationChanged()
的调用:
// Within the activity which receives these changes
// Checks the current device orientation, and toasts accordingly
@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:configChanges文档和 Configuration类。