我想知道在 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 左右在视频中
如果您需要更多控制,我不确定如何在 Volley ImageLoader
上设置 Tag
但我现在正在研究这个(为什么我遇到了这个问题) .如果我发现了什么,会更新我的答案。但是,内置的自动取消功能似乎是取消大多数图像请求的最合适位置。
关于android - 在 Android Volley 中取消 NetworkImageView 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17484592/