繁体   English   中英

使用Android-UIL,如何停止下载?

[英]Using Android-UIL, How to stop downloading?

我正在使用UIL (由Nosotra )下载服务器渲染的图像,并且服务器最多需要50秒来创建每个图像。 服务器的超时设置为15秒,因此我们创建了一个在ImageDownloader.getStream()方法中实现的轮询机制。 下载后,图像显示在ViewPagerandroid.support.v4.view.ViewPager ,就像示例一样。)

当用户导航到其他页面时,我希望在不下载文件的情况下停止轮询,但似乎没有“ ”方法来打破下载流程。

getStream伪代码

1. Parse custom-style URI ("asdf://mypng|123455678945643563245");
2. Make a real world URL from it.
3. Poll the server for the image url (causes the server to render - could take up to 1m30s).
4. Get the stream from the URL, return the stream to caller. 
       Example Code: InputStream is = (InputStream) url.getContent();

到目前为止尝试了什么

从我的getStream方法返回null会导致抛出NullPointerException ,因此它与抛出异常基本相同。

抛出异常时,图像会停止,但是:

  1. 稍后的几张图片,我得到一个OutOfMemoryError ,所以我在屏幕上显示错误。 我不应该得到错误。 我已经尝试过这个SO问题的清单 ,但没有任何效果。 这是OOM Stacktrace: OutOfMemoryError stacktrace nostra uil
  2. 下载停止,如果查看器不回收视图,当返回到该页面时,我仍然会看到该错误页面(不重试)。

我希望如何

我希望我有一个“等待”方法,可以添加停止当前下载并重新添加一个新任务到队列的末尾(当前在QueueProcessingType.LIFO上设置,我希望它下载re-当前页后之后 ,并且将用户需要的任何新页面应该对重新加入的人优先)。

我也愿意避免OutOfMemoryError

请帮忙。

问题可能在这里4.下载图像,返回流。 下载 - 这是UIL的主要特色。 只需在这里返回NetworkStream即可。 我还在UIL上使用大图像和启用了MemoryCache。 您在服务器上也有哪个图像大小。 在加载Image方法中,您可以控制Size。 另外如此有用的UIL GitHub请阅读3和4段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM