取消Android Volley中的NetworkImageView请求

sai*_*gai 2 android networkimageview

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

我有一个片段,用一些文本填充listview(通过使用Volley的JSON RPC调用检索),每个列表项都有一个NetworkImageView.

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

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

    VolleyRequestManager.getRequestQueue().cancelAll(this);
}
Run Code Online (Sandbox Code Playgroud)

我对文本的每个JSON请求都相应地设置了标记:

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

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

pjc*_*jco 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一个排球,ImageLoader但我正在研究这个(为什么我遇到这个问题).如果我找到了什么,会更新我的答案.但是,内置自动取消似乎是取消大多数图像请求的最合适的地方.

  • 这是真的.我也错过了这一点,并为NetworkImageViews添加了标签,浪费了相当长的一段时间.只能标记常规请求,然后从onPause手动取消. (2认同)