2

我想知道在 Volley 中取消正在执行的 NetworkImageView 请求的正确方法。

我有一个用一些文本填充列表视图的片段(也使用 Volley 通过 JSON RPC 调用检索),并且每个列表项都有一个 NetworkImageView。

在我的片段的 onPause() 中,我有:

@Override
public void onPause() {
    super.onPause();

    VolleyRequestManager.getRequestQueue().cancelAll(this);
}

我将标签设置为相应的文本的每个 JSON 请求:

    mRequest = new JsonRpcRequest<Data>(Method.POST,
            jsonRpcRequestBody,
            Dataclass.class,
            createSuccessListener(),
            createErrorListener());
    mRequest.setTag(this);
    VolleyRequestManager.getRequestQueue().add(mRequest);

问题是; 在我的布局 XML 资源文件中定义了我的 NetworkImageView,它们不共享与 JSON 请求相同的标签,因此我相信它们不会在我的 onPause() 代码触发 cancelAll(this) 时被取消。有没有办法以某种方式取消相应的 NetworkImageViews?或者我是否需要破解 Volley 的代码来添加一个方法来取消所有请求而忽略标签比较?

4

1 回答 1

6

NetworkImageView 在与视图层次结构分离时自动取消。

根据 Ficus Kirkpatrick(Google Play 应用工程师)的 Google IO 演示文稿,NetworkImageView当与视图层次结构分离时,会自动取消进行中的请求。

@ 16:35 在视频中

http://www.youtube.com/watch?v=yhv8l9F44qo&list=PLWz5rJ2EKKc9rkwO9yBosRvkQBJd5utmR&feature=player_detailpage#t=999

如果您需要更多控制,我不确定如何Tag在 Volley 上设置,ImageLoader但现在正在研究这个(为什么我遇到这个问题)。如果我发现了什么,会更新我的答案。但是,似乎内置的自动取消是取消大多数图像请求的最合适的地方。

于 2013-08-29T00:58:26.620 回答