概述
setUserVisibleHint方法和onHiddenChanged方法都是用来当fragment可见性发生判断时调用和触发的,但是二者的调用时机略有差异。
方法触发时机说明
onHiddenChanged
isHidden字段发生变化时触发,用FragmentTransaction来控制fragment的hide和show时,那么这个方法就会被调用。每当你对某个Fragment使用hide或者是show的时候,那么这个Fragment就会自动调用这个方法。
使用情况:你自己去管理Fragment,而不是用viewpager管理的时候
SetUserVisibleHint
isVisible字段触发生变化时触发,多用于ViewPager管理fragment时触发。在使用viewpager的时候,viewpager内部有个提前缓存的机制(默认是提前缓存一页),比如你在看第一个Fragment的时候,隔壁的Fragment已经创建好了,但此时的状态却是不可见的。但是这时候Fragment不会去调用上面说的onhiddenchanged方法,只会调用setUserVisibleHint这个方法。
使用情况:多用于ViewPager控制fragment显隐时触发此方法。
网友评论