文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android仿今日头条多个fragment懒加载的实现

2023-05-30 16:53

关注

前言

最近有时间,所以我又双叒叕推新一篇文章了,fragment懒加载实现虽然是个小模块,但做过的人都有体会,通常并不会轻易就成功了的,让你辗转反侧,彻夜难眠,绵绵无绝期。我就按照今日头条的样式做了一个懒加载功能。文章到一半会解释大家可能遇到的不加载数据了的坑,先不剧透。

Fragment的生命周期回顾

Android仿今日头条多个fragment懒加载的实现

github代码直通车 (本地下载)

这里是今日头条效果:

Android仿今日头条多个fragment懒加载的实现

自制效果,有图有真相:

Android仿今日头条多个fragment懒加载的实现

实现思路:

使用Fragment类自带方法setUserVisibleHint()判断当前fragment是否对用户可见,根据回调的isVisibleToUser参数来进行相关的逻辑判断。重写该方法,创建变量isVisible拿到是否可见标志。

但是直接根据isVisible判断就加载数据,可能onCreateView()方法并未执行完毕,此时就会出现NullPointerException空指针异常。所以就需要满足控件初始化完成,用户可见,才能加载数据。

Android仿今日头条多个fragment懒加载的实现

LazyloadFragment懒加载fragment实现:

public abstract class LazyloadFragment extends Fragment { protected View rootView; private boolean isInitView = false; private boolean isVisible = false; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  rootView = inflater.inflate(setContentView(), container, false);  init();  isInitView = true;  isCanLoadData();  return rootView; } @Override public void setUserVisibleHint(boolean isVisibleToUser) {  super.setUserVisibleHint(isVisibleToUser);  //isVisibleToUser这个boolean值表示:该Fragment的UI 用户是否可见,获取该标志记录下来  if(isVisibleToUser){   isVisible = true;   isCanLoadData();  }else{   isVisible = false;  } } private void isCanLoadData(){  //所以条件是view初始化完成并且对用户可见  if(isInitView && isVisible ){   lazyLoad();   //防止重复加载数据   isInitView = false;   isVisible = false;  } }  protected abstract int setContentView();  protected abstract void init();  protected abstract void lazyLoad();}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯