android - 在 Android Volley 中取消 NetworkImageView 请求

标签 android networkimageview

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

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

在我的 fragment 的 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);

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

最佳答案

NetworkImageView 在从 View 层次结构中分离时自动取消。

根据 Ficus Kirkpatrick(Google Play 应用工程师)的 Google IO 演示,NetworkImageView 从 View 层次结构分离时会自动取消正在进行的请求。

@ 16:35 左右在视频中

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

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

关于android - 在 Android Volley 中取消 NetworkImageView 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484592/

相关文章:

android - Flurry 应该用在 Services 和 AsyncTasks 中?

java - 添加新 fragment 时显示的按钮

android - Listview 和 volley - 图像分配错误

android - 让 Volley 的 NetworkImageView 显示本 map 片文件

android - 发布对Android Market的依赖

java - Google Play 崩溃 LibGDX 项目

android - 路径中的 drawTextOnPath 从错误的坐标或从右侧开始显示文本

android - 在Flutter中-如何传递从url下载的图像

android - 如何使用 volley 库 android 创建圆角图像