我正在编写一个应用程序,它接受HTML页面并解析它们以在屏幕上显示。具体来说,此应用程序从留言板中提取HTML并列出用户发布的帖子。
问题是帖子中的很多内容都是<img>
标签中的图片,因此我需要编写Html.ImageGetter
来处理图片的下载。
我的textView.setText()
方法如下所示:
myTextView.setText(Html.fromHtml(myText, new ImageGetter() {
@Override
public Drawable getDrawable(String source) {
Drawable d;
// Need to async download image here
return d;
}
}, null));
同步执行此操作非常简单,但有没有建议的方法异步执行此操作,以便它不会锁定我的UI线程?我还想最终构建这些图像的缓存,但我想,一旦异步下载就在那里,这将非常简单。
答案 0 :(得分:2)
同步执行此操作非常简单,但有没有建议的方法异步执行此操作,以便它不会锁定我的UI线程?
那将是困难的,也许是不可能的。您必须立即返回某些内容。即使这是一个占位符,您仍然面临着在下载完成后如何替换占位符的挑战。由于您无法访问呈现图像的ImageView
(如果 是ImageView
),我不知道您将如何安排替换占位符。
答案 1 :(得分:1)
我会使用AsyncTask
或Thread
/ Handler
组合。
答案 2 :(得分:0)
如何通过使用不可见的Html.fromHtml在显示html之前提取所有url,将这些url放在列表中,异步下载所有图像,将它们存储在内存缓存中,然后实现ImageGetter来执行缓存使用url作为键,将drawable作为值进行查找。
答案 3 :(得分:0)
用于异步下载图像并将它们存储在内存缓存中,这里有一个迷你库:) https://github.com/koush/UrlImageViewHelper