我正在制作自定义ImageView
。其中一种方法是从URL加载图像。我想在线程中检索位图并在UI线程中加载位图。
如何进行runOnUIThread()
调用以绘制位图?
是否有某种内置功能?或者我应该在构造函数中创建Handler
并使用它在UI线程中运行runnables?
答案 0 :(得分:42)
通过AsyncTask
下载图片,并在 onPostExecute 方法
OR
从单独的图片下载主题使用View
的帖子方法,该方法将始终在 UI-thread 上运行Runnable
:
yourImageView.post(new Runnable() {
@Override
public void run() {
// set the downloaded image here
}
});
答案 1 :(得分:4)
您可以这样做:
new Thread(new Runnable() {
public void run() {
final Bitmap bm = getBitmapFromURL(myStation.getStation().imageURL);
((Activity) context).runOnUiThread(new Runnable() {
public void run() {
icon.setImageBitmap(bm);
}
});
}
}).start();
这将在活动之外工作,例如在ListAdapter中。
答案 2 :(得分:2)
创建一个从AsyncTask扩展的类。在构造函数中传递ImageView。在doInBackground方法中,下载图像。在postExecute方法中,将图像设置为ImageView。