viewpageindicator +fragment 在网络访问中与volley框架 null问题
来源:互联网 发布:顾家北和慎小嶷 知乎 编辑:程序博客网 时间:2024/05/16 10:41
最近在写一个电子图书馆,采用的主体的框架是volley和viewpageindocator。首先想说,这两个开源框架真的很优秀。有很多帖子bolg都对他们做了很详细的描述,在此我仅仅将我做码代码过程中遇到的问题记录一下。
1.viewpage后台运行之后在activity栈还原,程序突然变得很卡。并不时报出getActivity()为null的错误。
对于这个问题,我想说的是,首先需要理解fragment的生命周期,我在这里不多说,很多帖子都有这个描述。遇到这个问题主要是因为在后台运行过程中GC回收了activity,而fragment并没有回收,而是通过onsaveinstance函数保存了临时状态,那么在恢复activity的时候,就会导致fragment和fragmentactivity之间的attach不到的问题。在此,解决办法,很多前辈都有描述,两种。
1、不保存fragment的状态:在MyActivity中重写onSaveInstanceState方法,将super.onSaveInstanceState(outState);注释掉,让其不再保存Fragment的状态,达到fragment随MyActivity一起销毁的目的。 2、重建时清除已经保存的fragment的状态:在恢复Fragment之前把Bundle里面的fragment状态数据给清除。方法如下: if(savedInstanceState!= null) { String FRAGMENTS_TAG = "android:support:fragments"; savedInstanceState.remove(FRAGMENTS_TAG); }
2.volley网络访问获取到json数据,加载到adapter中也报getActivity为null错误。
一直以为是因为oom的问题,导致内存回收了,而导致fragmentActivity一直出现这个状态。就一直在清理缓存并对fragment各个生命周期进行观察。后面才发现并不是这个问题,真正的问题是:volley网络获取数据是异步操作,那么操作完成获取到网络返回值的时候,可能用户已经滑到别的fragment,而该fragment已经没有attatch到fragmentActivity上去了。那么这是的getActivity返回值也就理所当然的是为null了。毕竟是异步操作。
对于这种问题,参考过搜狐视频的APP,因为感觉浏览界面是差不多的。发现有一个不一样的地方,搜狐的app在切换的时候,滑动时两个相邻fragment的view是完全保证并正常运行的。这个问题等以后有时间深入探讨一下。
而我对于这个问题的解决方式很简单:通过启动程序的时候启动一个后台service,通过这个service来进行初始界面的数据获取,然后保存在缓存中,或者直接sharepreference保存到本地。当数据拉取完成之后通过广播的形势,通知到UI主线呈。如果进入viewpageindicator 之时数据还没有缓存完成,那么就显示圆形进度条进行等待操作。
- viewpageindicator +fragment 在网络访问中与volley框架 null问题
- Android_访问网络四(Volley网络框架)
- 关于在Fragment中getActivity与getApplicationContext等方法返回null的问题
- 如何在Android开发中高效使用Volley网络框架
- Android 网络访问框架 Volley 基本使用
- Volley框架网络访问String,JsonObject,JsonArray
- 用volley框架进行网络访问
- 关于volley网络请求框架乱码问题
- Android中第三方框架【网络框架Volley】的使用【Application生命周期】【内存泄漏问题】
- Android中 网络框架Volley的用法
- Fragment中getActivity为null的问题
- fragment中findFragmentById返回为null问题
- fragment 中获取getActivity组件null问题。
- 使用Volley框架发起网络访问的写法
- 访问网络的框架(Volley和OkHttp3)使用
- Viewpageindicator inside fragment
- Android Volley网络访问
- Volley 网络访问
- 解决GitHub Pages屏蔽百度爬虫的方法
- ReactiveCocoa框架菜鸟入门——信号(Signal)详解 第五课:适合给新手看的RAC用法总结
- (p143)11.1-4大数组直接寻址
- JavaSE程序分析002 try-catch-finally与return的小事情
- Leetcode之super ugly number
- viewpageindicator +fragment 在网络访问中与volley框架 null问题
- @RequestParam 和@RequestBody的使用方式
- 三维旋转矩阵推导
- 省选算法汇集(持续更新)最后更新2016.2.29
- 软件测试面试 (一) 如何测试一个杯子
- hibernate-validator的使用说明
- BZOJ1195 HNOI2006 最短母串
- 【Python学习笔记】一个很酷的尾递归优化
- mybatis代码自动生成