Android のsetImageResource() ドキュメントには次のように記載されています。
これにより、UI スレッドでビットマップの読み取りとデコードが行われるため、遅延の問題が発生する可能性があります。それが懸念される場合は、代わりに setImageDrawable(android.graphics.drawable.Drawable) または setImageBitmap(android.graphics.Bitmap) と BitmapFactory の使用を検討してください。
サンプルアプリケーションでこの正確な問題を解決しようとしています。ここで「行間を読み」、からの呼び出しを置き換えることになっていると思います:
((ImageView) rootView.findViewById(R.id.screen_image)).setImageResource(imageId);
代わりに電話する
InputStream is = this.getResources().openRawResource(imageId);
Bitmap imageBitmap = BitmapFactory.decodeStream(is);
((ImageView) rootView.findViewById(R.id.screen_image)).setImageBitmap(imageBitmap);
AsyncTask
しかし、 -のようなものを使用して、別のスレッド内からこれを行います
私の理解は正しいですか、それとももっと簡単な解決策がありますか?
アップデート:
developer.android.com にビットマップを効率的に表示するセクション全体があるようです。現在調査中です。