当Activity关闭后,网络请求回调的处理

当咱们在使用网络请求的时候,通常都是经过回调来获取请求到的数据。对于网络请求的回调须要注意的几个点服务器

  1. 好比咱们的回调在Activity中处理数据,当咱们把Activity关闭后,若是获取到数据时,就算咱们的Activity被finish回调仍是会执行,那么这个时候咱们在回调里所作的一些操做,极可能会形成程序的错误。因此咱们须要在回调的时候判断下Activity是否finish.网络

    isFinishing()//判断当前的Activity是否关闭,若是活动结束,返回true,不然返回false。
  2. 在一个Activity或Fragment发起网络请求的时候,当咱们关闭界面后,须要把发出的请求给取消掉,也就是说当咱们发出一个请求的时候,数据尚未获取到咱们又进入了新的界面,发起了一个新的请求,当请求多起来的时候就会出现阻塞的现象,好比:年级筛选,商品分类等这些请求都是会出现这种状况的app

  3. 这里说下不少的时候别太相信服务器返回的数据,反正我是被坑过,因此咱们尽可能对获取到的数据进行判断ide

我目前的几个项目都是使用volley,取消请求的时候能够经过tag来取消,下面是取消请求的代码code

/**
     * 取消某个标示的全部请求,通常取消某个界面的全部请求
     *
     * @param tag 标示请求从哪一个界面而来,方便界面退出后取消请求
     */
    public void cancelAll(final String tag) {
        getRequestQueue().cancelAll(new RequestFilter() {
            @Override
            public boolean apply(Request<?> request) {
                boolean compareBool = false;
                if (!TextUtils.isEmpty(tag)) {
                    Object objTag = request.getTag();
                    if (null != objTag) {
                        compareBool = tag.equalsIgnoreCase(objTag.toString());
                    }
                }
                return compareBool;
            }
        });
    }
相关文章
相关标签/搜索