android recyclerView刷新时的闪烁问题排查

现象:

两个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进行统一切换,不要一些切换了一些没切换

 就在这时,我突然明白,就是以一个傻子的眼光来看,这个世界也不是完美无缺的,
 这个世界上任何东西都是这样,你不要它,它就好好地在那里,保持着它的完整、它的纯粹,
 一旦到了手中,你就会发现,自己没有全部得到。    
                                                        ---《尘埃落定》 阿来

猜你喜欢

转载自blog.csdn.net/Duker_tec/article/details/127750211