【Android】Fragment真正意义上的onResume和onPause

时间:2022-03-13 23:41:29

原博客:
博客园:
http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com 

前言

Fragment虽然有onResume和onPause的,但是这两个方法是Activity的方法,调用时机也是与Activity相同,和ViewPager搭配使用这个方法就很鸡肋了,根本不是你想要的效果,这里介绍一种方法。

正文

 继承setUserVisibleHint方法:

@Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            //相当于Fragment的onResume
        } else {
            //相当于Fragment的onPause
        }
    }

代码说明:

通过阅读ViewPager和PageAdapter相关的代码,切换Fragment实际上就是通过设置setUserVisibleHint和setMenuVisibility来实现的,调用这个方法时并不会释放掉Fragment(即不会执行onDestoryView)。

以上是农民伯伯的博客写得内容

===================================================================================

在实际应用中要特别注意该函数的调用次序

Fragment和ViewPager搭配使用,首先要注意ViewPager的特性,ViewPager在不使用setOffscreenPageLimit(int i),函数时会预加载当前页的下一页,这时候在fragment中使用setUserVisibleHint函数时要特别注意,它是第一个被调用的函数,在onCreate和onCreateView函数调用之前。所以如果在该函数里使用一些未被初始化的变量时就会出问题。所以切记切记,当然你可以自己打印信息测试下。有趣的函数~~~~【Android】Fragment真正意义上的onResume和onPause