首页
学习
活动
专区
圈层
工具
发布

ViewPager懒加载的实现,理解setUserVisibleHint,而不只是会用就好

当然你也可以将所有页面全部缓存,但这样所消耗的内存不言而喻,而且如果数据过多,第一次进去的时候的速度不可估量。所以这次我们使用懒加载来实现我们的需求。...Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); isvisible = true...我们在onActivityCreated处打印Log,然后在 setUserVisibleHint处也打印一句Log,观察结果: 这是因为setUserVisibleHint 在Fragment...之后就已经调用,但是当时还没有初始化完成,我们的子碎片还没有缓存好,所以我们在fragment基类里面定义了一个变量,只有当 onActivityCreated 碎片一定与相关的活动创建完毕的时候再更改变量的值为true...setUserVisibleHint处打印Log,就会发现,先两次false,再true.

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Android开发笔记(一百三十九)可定制可滑动的标签栏

    newTabSpec : 新建并返回一个包含具体标记的标签规格。 addTab : 添加一个标签页。...2、从配置页面返回到FragmentActivity时,主页面要从共享参数中读取最新的标签页列表,并构造最新的标签栏。...3、因为重新构造标签栏时,默认显示第一个标签的Fragment页,而不是最近一次返回的Fragment页;所以要在每次进入Fragment页时都把该Fragment保存到全局内存,这样重新构建标签栏时,...平常用户点开某个标签页,该标签页的setUserVisibleHint便被调用;可是第一次打开标签主页面时,默认显示第一个标签页,此时标签页的生命周期为onAttach->setUserVisibleHint...@Override public void onAttach(Context context) { //初始生命周期流程为onAttach->setUserVisibleHint->onCreateView

    2K20

    【Android】Fragment懒加载和ViewPager的坑

    圆形的旋转加载图标只有一个,所以,如果当前Fragment正处于加载状态,在离开该Fragment时需要隐藏加载动画,因为另一个Fragment并不一定处于加载状态,当返回Fragment时,如果还是处于加载状态...而MeiziDataFragment却先打出了false,然后才打出true,这是因为setUserVisibleHint()在Fragment实例化时会先调用一次,并且默认值是false,当选中当前显示的...跳转到 MeiziDataFragment, 但跟上上面的日志图片不同,这里只打印了两条日志,也就是说即使有三个Fragment被实例化了,但只有显示的那个Fragment和离开的那个Fragment...另外,因为ViewPager缓存机制,所以题主进行了view的复用,防止onCreateView()重复的创建view,其实也就是将view设置为成员变量,创建view时先判断是否为null。...(rootView == null) { return; } hasCreateView = true; if (isVisibleToUser

    2.5K20

    【Android】再来一篇Fragment的懒加载(只加载一次哦)

    使用前需知 2017-7-14更新: 目前有人使用后出现了诸如首次打开显示空白界面,但点击有反应;或来回切换又变空白界面的问题。...比如说,我下载完数据就直接需要对 ui 进行操作,将数据展示出来,但有时却报了 ui 控件 null 异常,这是因为 setUserVisibleHint() 有可能在 onCreateView() 创建...isVisibleToUser = true //如果Fragment从可见->不可见,那么setUserVisibleHint()也会被调用,传入isVisibleToUser = false...; isFragmentVisible = false; rootView = null; isReuseView = true; }...()多余的回调场景,保证只有当fragment可见状态发生变化时才回调 * 回调时机在view创建完后,所以支持ui操作,解决在setUserVisibleHint()里进行ui操作有可能报null

    1.9K70
    领券