谷歌为我们提供了setUserVisibleHint和onHiddenChanged这两个方法,这两个方法的使用场景是有所不同的!
- setUserVisibleHint的使用
-
> FragmentPagerAdapter+ViewPager的使用场景
使用FragmentPagerAdapter+ViewPager时,切换回上一个Fragment页面时(已经初始化完毕),不会回调任何生命周期方法,也不会走onHiddenChanged()方法,所以在viewPage配合fragment搭建页面的情况下,切换页面时候,只能使用setUserVisibleHint方法。
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
// 相当于onResume()方法
}
else { // 相当于onpause()方法 }
}
- onHiddenChanged的使用
- 使用add()+show(),hide()跳转新的Fragment时,旧的Fragment回调onHiddenChanged(),不会回调onStop()等生命周期方法,而新的Fragment在创建时是不会回调onHiddenChanged(),所以一般会和onresume()方法配合使用。具体场景自己来判断。
@Override public void onHiddenChanged(boolean hidden) { if (hidden) {
//相当于Fragment的onPause
System.out.println("界面不可见");
} else { // 相当于Fragment的onResume
System.out.println("界面可见"); } }