我正在定制ImageView
。其中一种方法是从 URL 加载图像。我想在线程中检索位图并在 UI 线程中加载位图。
如何runOnUIThread()
调用绘制位图?
是否有某种内置功能?或者我应该在构造函数中创建一个Handler
并将其用于在 UI 线程中运行可运行对象?
通过下载图像AsyncTask
并在其onPostExecute方法中设置为您的视图
或者
从单独的图像下载线程使用post方法,View
该方法将始终Runnable
在UI 线程上运行:
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。