setUserVisibleHint--fragment真正的onResume和onPause方法
问题描述
在使用StatusBarUtil设置状态栏的时候遇到一个比较尴尬的问题:
状态栏要求与背景色一致,首页是红色,其他三个tab的颜色也各不相同,
而在切换的时候,状态栏的需要随着每一次切换而更改样式颜色
我们知道,一般我们会设置ViewPager的offscreenPageLimit属性,来复用Fragment
with(view_pager) {
offscreenPageLimit = 4
}
你不会想要每切换一次页面就重新生成一个Fragment的!太浪费性能。
问题分析
怎么解决上述问题呢,在Fragment的onResume中刷新数据,好想法!
但是设置了offscreenPageLimit属性之后,onResume只运行一次,已失效。
仔细想来我们需要的只是在 当前Fragment可见时,刷新数据而已
而Fragment是有这个方法的,也就是setUserVisibleHint
解决方案
// MessageIMFragment 可见true,不可见false
override fun setUserVisibleHint(isVisibleToUser: Boolean) {
super.setUserVisibleHint(isVisibleToUser)
if (isVisibleToUser){
StatusBarUtil.setLightMode(activity)
}
}
判断 isVisibleToUser 为 true 时,也就是当前Fragment可见时,进行相应操作即可!