你的ViewPager会卡吗

目前主流的安卓应用大都会采用ViewPager加Fragment的机制实现多个tab页面的切换,但是在开发工程中相信都会遇到这样的情况,如果在Fragment里访问网络或者执行复杂操作较多时,会使得切换过程变得卡顿,用户体验极为不好,为解决这个问题,小编找了一些方法:


  • Fragment轻量化

    如果ViewPager加载的Fragment都比较轻量,适当精简Fragment的布局,可提高Fragment加载的速度,从而减缓卡顿现象。

  • 防止Fragment被销毁

    ViewPager在切换的时候,如果频繁销毁和加载Fragment,就容易产生卡顿现象,阻止Fragment的销毁可有效减缓卡顿现象。

    (1) 在PagerAdapter里覆盖destroyItem方法可阻止销毁Fragment

@Override        
public void destroyItem(ViewGroup container, int position, Object object) {     
       //super.destroyItem(container, position, object);      
}

(2) 通过PagerAdapter的setOffscreenPageLimit()方法可以设置保留几个Fragment,适当增大参数可防止Fragment频繁地被销毁和创建。(风险:在Fragment比较多的情况下,部分低端机型容易产生OOM问题。)

  • Fragment内容延迟加载

    在切换到当前Fragment的时候,并不立刻去加载Fragment的内容,而是先加载一个简单的空布局,然后启动一个延时任务,延时时长为T,当用户在该Fragment停留时间超过T时,继续执行加载任务;而当用户切换到其他Fragment,停留时间低于T,则取消该延时任务。

@Override
public void onResume() {
   // TODO Auto-generated method stub
   super.onResume();
   //getData();
       
   new Handler().postDelayed(new Runnable() {
           
       @Override
       public void run() {
           // TODO Auto-generated method stub
           getData();
       }
   }, 200);
}

比较方便使用的几个方法大概就是这样,希望对大家有所帮助。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容