现象:
两个Activity,A和B,ActivityA的RecyclerView在不断刷新数据,当跳转到ActivityB再跳回ActivityA时,ActivityA的RecyclerView列表刷新时,出现了与当前Activity主题色(浅色主题)无关的颜色刷新闪烁,比如闪烁深色主题下的主题色黑色
分析:
分析发现,两个Activity在AndroidManifest中的初始化默认主题都为android:theme="@style/Dark"
但当用户切换主题后,ActivityA调用了setTheme(R.style.Light),但ActivityB没有调用,ActivityB的主题依然为android:theme="@style/Dark"
故分析,当从ActivityB再跳回ActivityA时,因RecyclerView及其item使用了诸如android:background="?attr/bgColorMain" 这类的与主题颜色相关的语句,系统的主题颜色还没来得及由"@style/Dark"切为"@style/Light"时,RecyclerView列表就进行了刷新,导致某些颜色还为"@style/Dark"下的颜色,故出现了一些深色闪烁
解决:
在切换Theme时,将所有Activity的Theme进行统一切换,不要一些切换了一些没切换
就在这时,我突然明白,就是以一个傻子的眼光来看,这个世界也不是完美无缺的,
这个世界上任何东西都是这样,你不要它,它就好好地在那里,保持着它的完整、它的纯粹,
一旦到了手中,你就会发现,自己没有全部得到。
---《尘埃落定》 阿来