关闭

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

514人阅读 评论(0) 收藏 举报
分类:

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

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

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

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

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

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

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



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

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

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


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23741次
    • 积分:444
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:5篇
    • 译文:0篇
    • 评论:5条