15

我正在制作一个用于将图像加载到列表中的图像加载器 - 因此,为了使其流畅,除了将图像设置为视图之外,一切都需要在后台线程中运行。问题是下面代码中的 Runnable 有时没有执行。我从后台线程调用 setImage 方法。

protected void setImage(final ImageView img, final Bitmap bm, String hash) {
    img.setTag(TAG_RESPONSE, hash);
    Log.v(TAG, "setting image bitmap1");
    //TODO: here is the bug - sometimes the runnable below is not called
    img.post(new Runnable() {

        @Override
        public void run() {
            Log.v(TAG, "setting image bitmap2");
            img.setImageBitmap(bm);
            img.invalidate();
        }
    });

}

任何人有任何想法我做错了什么?

4

1 回答 1

24

根据文档,只有当视图附加到窗口时,才应该从非 UI 线程调用 post(...) 。这可能是问题所在。

于 2012-09-22T14:58:31.630 回答