美文网首页
Android开发笔记2:Fragment的懒加载

Android开发笔记2:Fragment的懒加载

作者: 陈兴强 | 来源:发表于2020-03-07 14:30 被阅读0次

一前言:

项目中会用到ViewPager+Fragment实现选项卡的切换,如果请求网络会出现网络丢包、阻塞等问题
因为ViewPager配合Fragment使用,默认会加载两个Fragment页面,那么如何解决这个问题呢?
我们可以采用setUserVisibleHint这个方法

二 怎么使用

第一步:声明一个变量
isPageStart
第二步:重写onViewCreated方法并设置isPageStart为true
第三步:重写setUserVisibleHint()方法
当getUserVisibleHint()方法和isPageStart都返回true的时候可以开始加载数据了,为了防止重复加载,把isPageStart变量涉外false

三注意:

1.setUserVisibleHint方法会加载多次,
2.必须结合FragmentPagerAdapter才能使用

  1. onCreateView调用后任何View变量可以使用
    4.androidX当中已经建议使用setUserVisibleHint()方法而是用setMaxLifecycle()代替
    下面看一下源码
    setUserVisibleHint():
    @Deprecated
    public void setUserVisibleHint(boolean isVisibleToUser) {
        if (!mUserVisibleHint && isVisibleToUser && mState < STARTED
                && mFragmentManager != null && isAdded() && mIsCreated) {
            mFragmentManager.performPendingDeferredStart(this);
        }
        mUserVisibleHint = isVisibleToUser;
        mDeferStart = mState < STARTED && !isVisibleToUser;
        if (mSavedFragmentState != null) {
            // Ensure that if the user visible hint is set before the Fragment has
            // restored its state that we don't lose the new value
            mSavedUserVisibleHint = isVisibleToUser;
        }
    }

可以监听到Fragment的UI是否可见。

    @NonNull
    public FragmentTransaction setMaxLifecycle(@NonNull Fragment fragment,
            @NonNull Lifecycle.State state) {
        addOp(new Op(OP_SET_MAX_LIFECYCLE, fragment, state));
        return this;
    }

设置Fragment的生命周期

相关文章

网友评论

      本文标题:Android开发笔记2:Fragment的懒加载

      本文链接:https://www.haomeiwen.com/subject/evuqdhtx.html