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

ドキュメントによると、post(...)は、ビューがウィンドウにアタッチされている場合にのみ、UI以外のスレッドから呼び出す必要があります。これが問題になる可能性があります。

于 2012-09-22T14:58:31.630 に答える