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)
Set a hint to the system about whether this fragment's UI is currently visible to the user. This hint defaults to true and is persistent across fragment instance state save and restore.
An app may set this to false to indicate that the fragment's UI is scrolled out of visibility or is otherwise not directly visible to the user. This may be used by the system to prioritize operations such as fragment lifecycle updates or loader ordering behavior.
Note: This method may be called outside of the fragment lifecycle. and thus has no ordering guarantees with regard to fragment lifecycle method calls.
网友评论