android fragment跳转卡顿,解决ViewPager+Fragment切换页面卡顿

思路:

滑动卡顿主要的原因是因为每次切换viewpager的时候会去缓存设定的页面个数,导致每次都会有fragment里的生命周期被重新调用,一些初始化内容,网络请求等被无限调用。

解决步骤分为两步:1、首先将viewpager的缓存个数设置为fragment的个数,也就是页面的个数。例如:viewPager.setOffscreenPageLimit(7);

这样可以在第一次创建viewpager和fragment的时候就将所有的页面都缓存,再次切换页面的时候就不会在去缓存已经被缓存的fragment页面。2、给Fragment写懒加载,只有当前Fragment处于可视窗口的时候会被调用。

重写Fragment的setUserVisibleHint方法,adapter中的每个fragment切换的时候都会被调用,如果是切换到当前页,那么isVisibleToUser==true,否则为false。示例代码如下(在Fragment封装的基类BaseFragment中,用来被其它自定义Fragment继承,重写lazyLoad方法就可以使用):

@Override

public void setUserVisibleHint(boolean isVisibleToUser) {

super.setUserVisibleHint(isVisibleToUser);

if (isVisibleToUser) {

isVisible =true;

lazyLoad();

}else {

isVisible =false;

onInvisible();

}

}

复制代码

/**

* 不可见

*/

protected void onInvisible() {

}

复制代码

/**

* 延迟加载

*/

public void lazyLoad() {

}

复制代码

适当的加一些标志位,用来判断是否第一次加载,是否需要刷新页面等等,就可以解决页面卡顿的问题,只有在需要刷新的时候才去做一些耗时耗资源的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值