В документации setImageResource() Android говорится:
Это выполняет чтение и декодирование Bitmap в потоке пользовательского интерфейса, что может вызвать сбой задержки. Если это вас беспокоит, попробуйте вместо этого использовать 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 - я сейчас изучаю это.