防止ViewPager中的Fragment被销毁的方法

转载 2015年07月10日 14:02:41

原文地址:http://blog.csdn.net/icyfox_bupt/article/details/18356461

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


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

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


这时,如果页面3中有需要耗时的事件,比如网络访问。那么,在我们进行 1-->2 的操作的时候,就会不断的出现页面3加载的对话框(如果有的话)。而且如果快速的 1-->2-->3的切换,3中的内容很可能还没加载出来。

这样重复的加载,既影响体验、又耗费时间和流量,所以笔者这两天一直在查如何在Fragment移出的时候不要销毁,或者保存状态。

后来发现真是多此一举,如果您的软件对内存消耗不是很在意的话,只需加入以下代码:

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. pager.setOffscreenPageLimit(2);  

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

为了保险起见,我是几个pager就设置了缓存几个。

防止ViewPager中的Fragment被销毁的方法

在使用ViewPager与Fragment的时候,ViewPager会自动缓存1页内的数据,如下图: 当我们当前处在页面2的时候,页面1和页面3的View实际上已经创建好了,所以在我们拖动的时候是...
  • icyfox_bupt
  • icyfox_bupt
  • 2014年01月16日 14:06
  • 34979

ViewPager切换防止Fragment销毁以及取消Fragment的预加载

存在的问题 1. 默认情况下,ViewPager会自动预加载 2. 切换过程中会销毁fragment视图下面的图说明情况如图,在Activity中使用ViewPager嵌套三个Fragment,当...
  • e_Inch_Photo
  • e_Inch_Photo
  • 2017年04月04日 00:29
  • 842

解决fragment的子fragment中viewpager里面的fragment不销毁 反复创建问题

苦苦研究了很久, 写的广播回调 为什么没用 真的是内存泄露吗? 为什么 destoryItem都不走,又怎么走注销广播的方法,但是非常烦躁,结果 放弃使用广播 实现异步通讯 。用eventbus,但是...
  • u010042660
  • u010042660
  • 2016年09月26日 14:01
  • 3422

ViewPager防止Fragment销毁以及取消Fragment的预加载

ViewPager简介 ViewPager不用多说,是v4包中的一个控件,可以用来实现屏幕间的切换。 跟listview一样,需要使用适配器,PagerAdapter PagerAdapter 必...
  • Mr_LiaBill
  • Mr_LiaBill
  • 2015年09月26日 10:58
  • 11555

ViewPager中切换界面Fragment被销毁解析

ViewPager中切换界面Fragment被销毁解析   1、应用处景 ViewPager+Fragment实现界面切换,界面数量>=3   ...
  • w1054993544
  • w1054993544
  • 2014年11月06日 18:46
  • 722

ViewPager中切换界面Fragment被销毁的问题

ViewPager中切换界面Fragment被销毁的问题分析 使用ViewPager+Fragment实现界面切换,当界面数量大于3时,出现二次滑动后数据消失的情况,下面由Fragment生命周...
  • Android_2016
  • Android_2016
  • 2016年05月11日 13:49
  • 3946

ViewPager页面滑动Fragment销毁问题

1、使用场景 ViewPager+Fragment实现界面切换,界面数量>=3 2、Fragment生命周期以及与Activity生命周期对比                    ...
  • walid1992
  • walid1992
  • 2015年11月09日 21:51
  • 1950

Fragment应用放置后台很久,被系统回收,出现crash(如viewpager + fragment)

使用Fragment应用放置后台很久,被系统回收,出现crash B.使用Fragment应用放置后台很久,被系统回收,出现crash; 原因:系统做了源码FragmentActivity...
  • u012437660
  • u012437660
  • 2015年10月29日 11:17
  • 1497

viewpager+fragment 防止fragment重新加载

mViewPager.setOffscreenPageLimit(categoryList.size()); mViewPager.setAdapter(new VPAdapter(getSuppor...
  • y2211911011
  • y2211911011
  • 2016年06月23日 18:28
  • 367

Android开发ViewPager的预加载和Fragment的销毁问题,以及tabLayout+ViewPager的使用,tablayout平板适配问题解决

最近想起ViwPager+Fragment一起使用的问题,于是就搞了Demo,随便使用了下TabLayout+ViewPager感觉效果还不错.在这里记录一下便于自己日后使用,也可以和大家分享下. 一...
  • wangjiangjun0815
  • wangjiangjun0815
  • 2017年02月27日 20:41
  • 1715
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:防止ViewPager中的Fragment被销毁的方法
举报原因:
原因补充:

(最多只允许输入30个字)