目前主流的安卓应用大都会采用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);
}
比较方便使用的几个方法大概就是这样,希望对大家有所帮助。