Fragment可见性的判断-——-getUserVisibleHint-和-isVisible-的区别

isVisible : 是关联与 fragment 生命周期的可见性的判断
User Visible Hint : 当 fragment 的可见性与其生命周期没有关系的时候,来进行对于可见性的判断

在使用 viewPager 进行添加若干 fragment 的时候,当 parentActivity 进行 onStart() 的时候,里面所有的 fragment 都会进行 onStart() ,即只要在 Parent 的可见状态之中,内部的所有的 fragment isVisible() 都是true,所以在 viewPager 的时候,是根据当前的fragment是否被选中去判断其的显示与隐藏,而当前这个 fragment 是否被选中的标志在 ViewPager 中就是 UserVisibleHint 的值。

isVisible() 是使用 FragmentManager 进行管理,是对于当前 fragment 是否对用户“可见”的判定方式。这里的“可见”是指在 onStart() onStop() 之间。
调用 FragmentManager.beginTransaction().add/remove/replace() 等相关方法,会导致 Fragment 被添加和移除,从而改变 isVisible() 的返回值

setUserVisibleHint(boolean isVisibleToUser) 是当使用 viewPager 去管理若干 fragment 的时候进行对于某 fragment 在显示跟隐藏的时候回调的方法
setUserVisibleHint() 从名字来看是给使用 Fragment 的模块来调用的,app也可以调用这个方法。

void setUserVisibleHint (boolean isVisibleToUser)