首先要说的是下面是一段伪代码,不能真实运用。主要就是说一下如何控制不会重复请求网络的方法。
//申明一个布尔值变量,默认未false。
isReqing=false;
//请求网络的方法
private void reqDatas()
{
//请求前先判断一下,如果为true,表示正在请求直接返回。
if (isReqing==true) {
return;
}
//如果isReqing为false则会继续下面的代码
//将isReqing设置成true,表明已经开始请求网络了
isReqing = true;
//后台执行网络请求
new AsyncGsonRequest<FindCollectAndAttentionVideoRes>(
Constants.FIND_MYSELF_ATTENTION_VIDEO_LIST, req,
AttentionVideoActivity.this) {
//请求成功执行的方法,当执行此方法时,请求已经完成了。
protected void onPostExecute(FindCollectAndAttentionVideoRes t) {
//这时候将isReqing设置成false,表明请求已经完成了。
isReqing = false;
/**
*
**/
。。。。。。其他当网络请求成功时需要执行的代码
}
//请求失败时执行的方法,当执行此方法时,请求已经完成了。
protected void onPostError(VolleyError e) {
isReqing = false;
/**
*
**/
。。。。。。其他当网络请求失败时需要执行的代码
}
}
可以看明白吗 尽量写的详细了,概括起来就是申明一个boolean变量,正在请求的时候为true,请求完后为false。而我们根据这个变量来决定是否继续请求网络。
二,做了上面的操作,重复请求的情况发生的概率大大减小了,可是实际过程中还是会时有发生,这说明上面的方法是不可取得。
最后的解决方法是让后台判断是一个用户是否对一件事情发出了多次请求。此外,前台客户端也对触发的按钮做了
setEnabled方法让按钮失效,不能被点击了。
当网络请求完成后使用
就这样,目前为止再也没有发生过重复请求网络的情况了。