【发布时间】:2016-03-31 20:27:55
【问题描述】:
我正在解析 JSON Obj 以获取图像的 url。 我正在使用此代码。
private Drawable LoadImageFromWebOperations(String strPhotoUrl) {
try {
InputStream is = (InputStream) new URL(strPhotoUrl).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
Log.e("TAGG", strPhotoUrl);
return d;
} catch (Exception e) {
Log.e("TAGG", e.toString());
return null;
}
}
但是我得到一个错误,这必须在 AsyncTask 中完成,即不同的线程。但是,我将如何在 ImageView 中插入可绘制对象?由于DoInBackground() 无权访问 UI 元素。此外,在解析从中获取 URL 的 JSON obj 之前,我无法访问 URL。那么在我的情况下我可以使用什么解决方案。谢谢!
【问题讨论】:
-
使用image-loading libraries for Android 之一,例如Picasso。他们为您处理后台线程等。
-
@CommonsWare 除了使用外部库之外没有其他选择。我是使用库的新手。你能帮我理解吗?谢谢。
-
有很多关于在Android中使用毕加索的教程。事实上,我上次检查时,他们的 git repo 在 README 中有一些示例
-
@zgc7009 谢谢!我去看看
-
“除了使用外部库之外没有其他选择”——当然有。然而,图像管理很复杂:后台处理、缩放、缓存、跟踪视图在
ListView和RecyclerView等事物中被回收。库有所有这些的实现,由 Android 专家编写,这些专家和成千上万的其他 Android 开发人员通过使用这些库进行了测试。如果您认为自己的用例可以做得更好,请随意实现另一组图像加载代码供您自己使用。
标签: java android json android-asynctask drawable