OKHttp取消网络请求

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

    以fragment中使用举例。

    1、

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

你可能感兴趣的:(Android--经典案例)