ViewPager 与Fragment懒加载设置

在父类Fragment中重写setUserVisibleHint方法,与getUserVisibleHint

/**
 * Fragment当前状态是否可见
 */
protected boolean isVisible;

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);

    if (getUserVisibleHint()) {
        isVisible = true;
        onVisible();
    } else {
        isVisible = false;
        onInvisible();
    }
}

/**
 * 可见
 */
protected void onVisible() {
    lazyLoad();
}

/**
 * 不可见
 */
protected void onInvisible() {
}

/**
 * 延迟加载
 * 子类必须重写此方法
 */
protected abstract void lazyLoad();

在子类lazyLoad方法中加载数据时调用。

第一次没有创建fragment时,方法调用。

点击第1个fragment

06-21 19:12:09.093 13243-13243/? E/Tag: 1 HomeFragment onInvisible
06-21 19:12:09.094 13243-13243/? E/Tag: 2 DiscoveryFrament onInvisible
06-21 19:12:09.094 13243-13243/? E/Tag: 1 HomeFragment lazyLoad  onVisible

点击第2个fragment

06-21 19:12:48.670 13243-13243/? E/Tag: 3 TopicFragment onInvisible
06-21 19:12:48.670 13243-13243/? E/Tag: 1 HomeFragment onInvisible
06-21 19:12:48.670 13243-13243/? E/Tag: 2 DiscoveryFrament lazyLoad  onVisible

点击第3个fragment

06-21 19:13:07.217 13243-13243/? E/Tag: 4 MineFragment onInvisible
06-21 19:13:07.217 13243-13243/? E/Tag: 2 DiscoveryFrament onInvisible
06-21 19:13:07.217 13243-13243/? E/Tag: 3 TopicFragment lazyLoad  onVisible

点击第4个fragment

06-21 19:13:22.322 13243-13243/? E/Tag: 3 TopicFragment onInvisible
06-21 19:13:22.322 13243-13243/? E/Tag: 4 MineFragment lazyLoad onVisible

所有fragment都创建时,方法调用。

点击第1个fragment

06-21 19:16:18.621 13243-13243/? E/Tag: 1 HomeFragment onInvisible
06-21 19:16:18.621 13243-13243/? E/Tag: 2 DiscoveryFrament onInvisible
06-21 19:16:18.621 13243-13243/? E/Tag: 4 MineFragment onInvisible
06-21 19:16:18.621 13243-13243/? E/Tag: 1 HomeFragment lazyLoad  onVisible
 

点击第2个fragment

06-21 19:17:24.287 13243-13243/? E/Tag: 3 TopicFragment onInvisible
06-21 19:17:24.287 13243-13243/? E/Tag: 1 HomeFragment onInvisible
06-21 19:17:24.287 13243-13243/? E/Tag: 2 DiscoveryFrament lazyLoad  onVisible

点击第3个fragment

06-21 19:17:47.493 13243-13243/? E/Tag: 4 MineFragment onInvisible
06-21 19:17:47.493 13243-13243/? E/Tag: 2 DiscoveryFrament onInvisible
06-21 19:17:47.493 13243-13243/? E/Tag: 3 TopicFragment lazyLoad  onVisible

点击第4个fragment

06-21 19:18:28.165 13243-13243/? E/Tag: 3 TopicFragment onInvisible
06-21 19:18:28.165 13243-13243/? E/Tag: 4 MineFragment lazyLoad onVisible

在lazyLoad设置网络加载数据可以只加载当前页面数据。

 

转载于:https://my.oschina.net/u/3015461/blog/994837

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值