防止ViewPager中的Fragment被销毁的方法
博客专区 > SuShine 的博客 > 博客详情
防止ViewPager中的Fragment被销毁的方法
SuShine 发表于2年前
防止ViewPager中的Fragment被销毁的方法
  • 发表于 2年前
  • 阅读 14
  • 收藏 1
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

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


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

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


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

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

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

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. pager.setOffscreenPageLimit(2);  
就可以让ViewPager多缓存一个页面,这样上面的问题就得到了解决。


当然这只是个取巧的方法,如果有比较好的保存状态的方法会更好。


转载请注明来自:http://blog.csdn.net/icyfox_bupt/article/details/18356461

共有 人打赏支持
粉丝 118
博文 321
码字总数 79631
×
SuShine
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: