Androidx-fragment1.1.0版本实现懒加载
更新为Androidx后,fragment在1.1.0发生少量变化
setUserVisibleHint方法给标注为Deprecated提醒用setMaxLifecycle实现懒加载
@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; } }在以前我们实现viewpager的懒加载,都通过setUserVisibleHint和onActivityCreated结合一起判断当前fragment能否展现出来
private boolean isViewCreated; // 界面能否已创立完成 private boolean isVisibleToUser; // 能否对客户可见 private boolean isDataLoaded; // 数据能否已请求 // 实现具体的数据请求逻辑 protected abstract void loadData(); @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); this.isVisibleToUser = isVisibleToUser; tryLoadData(); } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); isViewCreated = true; tryLoadData(); } public void tryLoadData() { if (isViewCreated && isVisibleToUser && !isDataLoaded) { WLog.i(TAG, getName() + ".tryLoadData"); loadData(); isDataLoaded = true; } }现在在新版本的fragment不需要判断那么,直接在onResume判断能否展现
private boolean isLoad; @Override public void onResume() { super.onResume(); tryLoad(); } private void tryLoad() { if (!isLoad) { WLog.i(TAG, getName() + ".tryLoad"); loadData(); isLoad = true; } } public abstract void loadData();仅仅这样还不够,由于刚才提到setMaxLifecycle方法来实现的,我们还需要调整viewpager的adapter来控制setMaxLifecycle
public class MaxLifecyclePagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragments; private List<String> titles; public MaxLifecyclePagerAdapter(FragmentManager fm) { super(fm, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT); } public void setData(List<Fragment> fragments, List<String> titles) { this.fragments = fragments; this.titles = titles; }}就是在super方法传进FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT方法就能实现在onResume实现懒加载方式,比之前代码简单多了
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Androidx-fragment1.1.0版本实现懒加载
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Androidx-fragment1.1.0版本实现懒加载