zoukankan      html  css  js  c++  java
  • Android中ViewPager+Fragment的销毁机制

         无意间发现viewPager中绑定三个Fragment后,在初始化最后一个Fragment时,发现控件初始化时为null的情况,

    排查了控件id重复及layout文件名称无冲突情况后,发现依旧无效。

         然后换一个思路,排查fragment生命周期。

    在使用ViewPager与Fragment的时候,ViewPager会自动缓存1页内的数据,

    当我们当前处在页面2的时候,页面1和页面3的View实际上已经创建好了,所以在我们拖动的时候是可以看见他们的界面的。

    但是当我们的页面处在1的时候,页面3实际上就已经销毁了。直到跳转到页面2的时候,页面3才会创建View。

    这时,如果页面3中有需要耗时的事件,比如网络访问。那么,在我们进行 1-->2 的操作的时候,就会不断的出现页面3加载的对话框(如果有的话)。

    而且如果快速的 1-->2-->3的切换,3中的内容很可能还没加载出来。

    这样重复的加载,既影响体验、又耗费时间和流量,在Fragment移出的时候不要销毁,或者保存状态。

    经过努力尝试后,发现解决方案:

    pager.setOffscreenPageLimit(2);  

    就可以让ViewPager多缓存一个页面,这样上面的问题就得到了解决。

    By:yzl

  • 相关阅读:
    Ubuntu出现无法定位软件包,更换源
    VScode支持Python
    Tp3.2 组合查询
    PHP 年月日,转为标准时间
    常用查询之按时间范围查询,按名称查询
    微信发起支付步骤
    拷贝 最近 一段时间生成的文件
    获取调查问卷统计
    Tp3.2 实现一个字段的或查询
    MFC DDX_Control 与 DDX_Text
  • 原文地址:https://www.cnblogs.com/widgetbox/p/12808153.html
Copyright © 2011-2022 走看看