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

前言

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


声明

欢迎转载,但请保留文章原始出处:) 
博客园:http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com 

正文

 继承setUserVisibleHint方法:

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        
        Log.i(ClassMethodFieldName.getCurrentMethodName(), isVisibleToUser?"true":"false");
        if (isVisibleToUser) {
            //相当于Fragment的onResume
        } else {
            //相当于Fragment的onPause
        }
    }

  代码说明:

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

Android Developer -- Fragment
Resumed The fragment is visible in the running activity.
Paused Another activity is in the foreground and has focus, but the activity in which this fragment lives is still visible (the foreground activity is partially transparent or doesn't cover the entire screen).

总结:

1 在一个Activity中,FragmentA 和FragmentB切换时,不会触发Fragment的onResume()和onPause()(因为这两个方法是Activity的方法,调用时机也是与Activity相同);

2在一个Activity中,如果只有FragmentA,在启动Activity并replace()或add()FragmentA后,并不会调用setUserVisibleHint()方法,在其中做是否可见的判断是无效的。需要使用onResume()和onPause()方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值