白天黑夜模式切换引起的activity销毁重启

当从深色模式切换到浅色模式时,activity会销毁重新加载,但往往是从xml文件开始加载,而动态设置的一些值不会保存,同时如果页面足够复杂,被打回到起点是很痛苦的。

对于这一点,可以在AndroidManifest文件中activity标签后设置

configChanges = "uiMode"

可以保证用户在模式切换时不会重启activity。但是模式切换并没有完成。

所以如果还需要切换模式的话,可以考虑重写OnConfigurationChanged()方法。

而我正面临着复杂的单界面多场景切换的情况,中间场景要恢复正确的状态让我很头疼,因为不能轻易切换场景。

private Configuration mConfiguration;
...

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    mConfiguration = new Configuration(getResources().getConfiguration());
}

...
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    if ((mConfiguration.diff(newConfig) & ActivityInfo.CONFIG_UI_MODE) != 0) {
        // you want to do 
    }
} 

老老实实去重新设置状态再刷新一次界面,多么痛的领悟。

不多说了,我先去准备好柴火,好让产品和设计师祭天。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值