Android切换日夜模式导致Activity重建
当从深色模式切换到浅色模式时,activity会销毁重新加载,但往往是从xml文件开始加载,而动态设置的一些值不会保存,同时如果页面足够复杂,被打回到起点是很麻烦的。以下是一些解决方案:
1,在AndroidManifest.xml给activity配置如下标签:
android:configChanges="uiMode"
2,然后配置如下的方法,来实现日夜模式的不同ui效果。
@Override
protected void onConfigurationChanged(Configuration config) {
super.onConfigurationChanged(config);
int currentNightMode = config.uiMode & Configuration.UI_MODE_NIGHT_MASK;
switch (currentNightMode) {
case Configuration.UI_MODE_NIGHT_NO:
// Night mode is not active, we're using the light theme
break;
case Configuration.UI_MODE_NIGHT_YES:
// Night mode is active, we're using dark theme
break;
}
}