2016-07-30 18 views
1

グライドを使用してリソースIDを使用してイメージをビットマップにロードしています。ビットマップを次のメンバ関数に渡します。カスタムビュークラス。グライドエラー:java.lang.IllegalArgumentException - バックグラウンドスレッドでこのメソッドを呼び出す必要があります

これは私のコードです:私はそれを実行しようとするたびに

try { 
     Bitmap bm=Glide. 
       with(getApplicationContext()). 
       load(mThumbIds[position]). 
       asBitmap(). 
       into(width, height). // Width and height 
       get(); 
     drawView.setImg(bm); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } catch (ExecutionException e) { 
     e.printStackTrace(); 
    } 

は、私は次のエラーを取得する:

Unable to start activity ComponentInfo{...}: java.lang.IllegalArgumentException: YOu must call this method on a background thread

が、私はこれをどのように修正すればよいですか?

+0

[イメージをビットマップにダウンロードするためにグライドを使用するにはどうすればよいですか?](http://stackoverflow.com/questions/27394016/how-does-one-use-glide-to-download-an-ビットマップへの画像) –

答えて

0

長時間実行されているタスクを実行し、パフォーマンス上の問題が発生する可能性があるため、get()をメインスレッドで呼び出すことはできません。

代わりにImageViewTarget、またはViewTargetのサブクラス化を考えて、get()の代わりにinto()を使用することを検討してください。 into()はイメージを非同期にロードし、カスタムサブクラスを使用してonReasourceReadyの適切なメンバー関数を呼び出すことができます。

onLoadFailedまたはonLoadClearedが呼び出されたときに、必ずビットマップをクリアしてください(通常、メンバー関数にnullを渡してください)。

関連する問題