在视图中运行RunUnUiThread

时间:2012-06-18 15:35:01

标签: java android view

我正在制作自定义ImageView。其中一种方法是从URL加载图像。我想在线程中检索位图并在UI线程中加载位图。

如何进行runOnUIThread()调用以绘制位图?

是否有某种内置功能?或者我应该在构造函数中创建Handler并使用它在UI线程中运行runnables?

3 个答案:

答案 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。