使用task来控制不进行重复加载

本文探讨了在网络不稳定情况下,使用AsyncTask优化数据分页加载的问题。通过判断AsyncTask的状态,避免了重复请求相同数据的情况,提高了用户体验。

相对handler而言,我更喜欢使用task进行异步处理。在我写数据分页加载时发现了一个问题:

当网络不稳定时,用户可能会多次上滑,这样就会导致去服务器端请求相同的数据。使用static boolean值进行处理是一种很恶心的方式,在思考解决这个问题的过程中,我想起同事曾经分享过使用handler来处理button的压力测试问题。Task应该也是有相应的函数来处理这种问题的,我查了下还真有:

下面是我的处理方案:




GetMoreDataTask getMoreDataTask;
if(getMoreDataTask == null || getMoreDataTask.getStatus() == AsyncTask.Status.FINISHED){
	getMoreDataTask = new GetMoreDataTask(mItems, newsAdapter, mloadMoreText,
	mloadMoreProgressBar, time,seriesId,Constants.AUDIO_TYPE+","+Constants.TEXT_TYPE);
	getMoreDataTask.execute();
}else if(getMoreDataTask != null && getMoreDataTask.getStatus() == AsyncTask.Status.PENDING){
	getMoreDataTask.execute();
}else {
	//getMoreDataTask != null && getMoreDataTask.getStatus() == AsyncTask.Status.RUNNING
	//DO NOTHING
}




很显然AsyncTask.getStatus()可以获取当前task的状态:

FINISHED 是结束

PENDING 是未开始(一个task在实例化之后只能执行一次,不然会报错)

RUNNING 是正在运行


ps 今天心情不好,说的太罗嗦。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值