OKHttp取消网络请求

来源:互联网 发布:ai什么软件 编辑:程序博客网 时间:2024/05/17 04:53

在快速切换界面的时候,容易丢失上下文,如果不取消请求的话有可能会导致请求的结果无法放到界面中,应为界面已经销毁了,容易报空指针,捕获不到,界面就挂了。背景知识,不同版本的cancle可能会略有不同,感觉别人写的特别麻烦,同时采取了,别人的建议当前界面销毁,直接销毁整个界面的请求,下面看下我的做法。

以fragment中使用举例。

1、

OkHttpUtils.post().url(Const.DATAURL).params(requestMap).tag(getActivity()).build().execute(.....)
在特定的位置增加tag(getActivity);同时标记当前界面
2、
@Overridepublic void onDestroy() {    OkHttpUtils.getInstance().cancelTag(getActivity());    super.onDestroy();}
在当前界面销毁的时候取消网络请求。
3、
 @Overridepublic void onError(Call call, Exception e, int id) {      if(call.isCanceled()){//关闭界面的取消请求执行这里             Log.e("aaaa","用户取消了这次请求");      }else{             //出现其它错误的时候执行       }}

原创粉丝点击