(转)防止ViewPager中的Fragment被销毁的方法
2016-01-03 19:58
225 查看
在使用ViewPager与Fragment的时候,ViewPager会自动缓存1页内的数据,如下图:
![](http://img.blog.csdn.net/20140116135812359?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWN5Zm94X2J1cHQ=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
当我们当前处在页面2的时候,页面1和页面3的View实际上已经创建好了,所以在我们拖动的时候是可以看见他们的界面的。
但是当我们的页面处在1的时候,页面3实际上就已经销毁了。直到跳转到页面2的时候,页面3才会创建View。
这时,如果页面3中有需要耗时的事件,比如网络访问。那么,在我们进行 1-->2 的操作的时候,就会不断的出现页面3加载的对话框(如果有的话)。而且如果快速的 1-->2-->3的切换,3中的内容很可能还没加载出来。
这样重复的加载,既影响体验、又耗费时间和流量,所以笔者这两天一直在查如何在Fragment移出的时候不要销毁,或者保存状态。
后来发现真是多此一举,如果您的软件对内存消耗不是很在意的话,只需加入以下代码:
就可以让ViewPager多缓存一个页面,这样上面的问题就得到了解决。
当然这只是个取巧的方法,如果有比较好的保存状态的方法会更好。
转载请注明来自:/article/1897220.html
当我们当前处在页面2的时候,页面1和页面3的View实际上已经创建好了,所以在我们拖动的时候是可以看见他们的界面的。
但是当我们的页面处在1的时候,页面3实际上就已经销毁了。直到跳转到页面2的时候,页面3才会创建View。
这时,如果页面3中有需要耗时的事件,比如网络访问。那么,在我们进行 1-->2 的操作的时候,就会不断的出现页面3加载的对话框(如果有的话)。而且如果快速的 1-->2-->3的切换,3中的内容很可能还没加载出来。
这样重复的加载,既影响体验、又耗费时间和流量,所以笔者这两天一直在查如何在Fragment移出的时候不要销毁,或者保存状态。
后来发现真是多此一举,如果您的软件对内存消耗不是很在意的话,只需加入以下代码:
pager.setOffscreenPageLimit(2);
就可以让ViewPager多缓存一个页面,这样上面的问题就得到了解决。
当然这只是个取巧的方法,如果有比较好的保存状态的方法会更好。
转载请注明来自:/article/1897220.html
相关文章推荐
- Android Intent.action 大全
- android launcher
- android 账户管理
- android webkit
- android drag
- Android KeyCode列表
- OOM android
- ANR android
- 一个程序猿的生命周期
- android 自定义
- 加载图片问题
- Android实现双进程守护
- 如何解决软键盘弹出引起的各种不适
- 防反编译、混淆文件proguard.cfg与proguard-project.txt详解
- Android.mk添加第三方jar包
- Android Proguard.flags LOCAL_PROGUARD_FLAGS
- 【Mood 21】要不要重复造轮子
- 彻底解决INSTALL_FAILED_UPDATE_INCOMPATIBLE的安装错误
- 【起航计划 037】2015 起航计划 Android APIDemo的魔鬼步伐 36 App->Service->Remote Service Binding AIDL实现不同进程间调用服务接口 kill 进程
- 【起航计划ObjC 003】印第安老斑鸠ObjC的幻想 ---- ObjC经典问题