这两天在开发过程中遇到一个网络访问时的问题,
问题是这样的:
我的一个FragmentActivity中加载了几个Fragment,每个Fragment中的OnResume方法中都进行了网络请求,当然,我的网络工具使用了单例模式,在每个Fragment中实现了网络工具的监听接口,这时候我从这个Activity跳转到另一个Activity后又回到这个Activity时,数据进行了刷新,可是却没有达到我想要的效果。。。。。。。
分析
想呀想呀。。。。。。还是不知道问题出在哪里。。。代码看了又看。。。还是没找到结果,最后调试一看,发现Fragment中的网络请求根本没有监听到,后面仔细一想,这是因为有多个Fragment先后给网络工具设置了监听接口的原因啊(单例模式),当Activity 从不可见到可见时执行了OnResume()方法,这时每一个Fragment也都执行了各自的OnResume,网络工具的监听就被进行了几次设置,从而没有达到我们想要的效果。。。
解决
这下可怎么是好啊,。。。。。想啊想。。。想到了下面几个办法:
1.每个Fragment中自己new 网络工具。。。。。(可以是可以,但显得浪费了很多资源)
2.让Fragment中的OnResume中的网络请求在Fragment可见的时候执行。。。。(哈哈哈,问题解决了)
我采用了第二种办法。。。。
今天突然看到之前遇到的一个问题,记录下来
并且添加hide(),add(),方法之后,需要commit(),来实现两个Fragment跳转的时候,这种情形下参数需要进行系统保存,但是这个时候你已经实现了跳转,系统参数却没有保存。此时就会报异常。
分析原因:你并不需要系统保存的参数,只要你自己设置的参数能够传递过去,在另外一个Fragment里能够顺利接受就行了,现在android里提供了另外一种形式的提交方式commitAllowingStateLoss(),从名字上就能看出,这种提交是允许状态值丢失的。到此问题得到完美解决,值的传递是你自己控制的。