最近解决tab滑动及点击快速切换,快速点击压力测试系统会崩溃问题心得

         最近在项目中应用到了ViewPagerIndicator+Fragment组合实现可点击,可滑动tab切换,但每个Fragment都有不少接口向后台请求数据,但产品需求请求数据后界面数据是不会经常变化的。

         刚做完,通过压力测试来回快速切换系统会出现崩溃,那么开始漫长的寻找问题之路。

         首先我认为会是内存溢出的问题,所以我通过MAT检测发现,果然在其中一个Fragment中犹豫有比较多比较大的图片,没有做好释放,加上之后解决了内存溢出的风险;但是依然在钢琴手一样的压力测试下依然会出现ANR;

         这次我想到的方法是写一个小算法类似于防止快速重复点击的算法,写好后虽然有优化但依然没有彻底解决。

         有一次我讲每个Fragment的生命周期都打印一遍,发现ViewPager存在预加载的问题,我决定去掉预加载,这样会减轻网络请求压力,这次有很大的提高,但每次切换都会重新加载,会出现短暂的白屏也是一个问题。

          我又研究了一下FragmentPagerAdapter,为什么不能在切换下保存数据状态呢,最后找到了方法彻底解决了系统不稳定的问题。

          但是还有一个问题如果用FragmentPagerAdapter切换保存数据后,那么什么时候在服务器更新数据后在进行请求呢,而我们的产品又不是类似新闻类软件需要实时更新数据(那样就需要轮询功能,或者推送机制);所以再优化就应该需要和服务器一起解决,服务器提供一个接口来告诉我什么时候有新数据需要更新,我再去更新数据。

      至此,就是我的解决过程及一些想法,不知道对不对,是否合理;希望有大神指点。

取消预加载方法:ViewPager+Fragment连用取消预加载(ViewPagerIndicator+Fragment) 一文

保存数据状态方法:ViewPager中切换及滑动切换Fragment数据保存状态讲解 一文

来源:Franco蜡笔小强

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2015年10月18日
下一篇 2015年10月18日

相关推荐