我正在制作一个自定义的 ImageView
,其中一个方法是从URL加载图像。 我想在线程中检索位图并在UI线程中加载位图。
如何使用 runOnUIThread()
调用绘制位图?
是否有某种内置函数?或者我应该在构造函数中创建一个 Handler
并将其用于在UI线程中运行可运行项?
通过AsyncTask
下载图像,然后在其onPostExecute
方法中设置到你的视图中
或者
从一个单独的图像下载线程中使用View
的post
方法,它将始终在UI线程上运行其Runnable
:
yourImageView.post(new Runnable() {
@Override
public void run() {
// set the downloaded image here
}
});
你可以这样做:
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中。
创建一个继承自AsyncTask的类,并在构造函数中传递ImageView。在doInBackground方法中下载图像,在postExecute方法中将图像设置为ImageView。