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

 就在这时,我突然明白,就是以一个傻子的眼光来看,这个世界也不是完美无缺的,
 这个世界上任何东西都是这样,你不要它,它就好好地在那里,保持着它的完整、它的纯粹,
 一旦到了手中,你就会发现,自己没有全部得到。    
                                                        ---《尘埃落定》 阿来
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容