【问题标题】:runOnUiThread inside a View视图内的 runOnUiThread
【发布时间】:2012-06-20 14:47:46
【问题描述】:

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

如何拨打runOnUIThread() 来绘制位图?

是否有某种内置函数?或者我应该在构造函数中创建一个Handler 并将其用于在 UI 线程中运行可运行对象?

【问题讨论】:

  • 使用处理程序。如果我没记错的话,runOnUIThread 是 Activity 的方法

标签: java android view


【解决方案1】:

通过AsyncTask 下载图片并在其onPostExecute 方法中设置为您的视图

从单独的图像下载线程使用Viewpost 方法,该方法将始终在UI 线程上运行其Runnable

yourImageView.post(new Runnable() {
    @Override
    public void run() {
        // set the downloaded image here

    }
});

【讨论】:

  • 必须阅读 cyrilchampier 在评论中发布的链接。谢谢。
【解决方案2】:

你可以这样做:

 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();

这将在 Activity 之外工作,例如在 ListAdapter 中。

【讨论】:

    【解决方案3】:

    创建一个从 AsyncTask 扩展的类。在构造函数中传递 ImageView。在 doInBackground 方法中,下载图像。在 postExecute 方法中,将图片设置为 ImageView。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2013-05-01
      • 1970-01-01
      相关资源
      最近更新 更多