В моем приложении выгодно, если я предварительно загружаю определенные изображения. Я делаю это правильно, в AsyncTask, как написано в официальной документации.Но у меня есть проблема/вопрос о том, когда они должны быть установлены.
Я покажу фрагменты кода. Обратите внимание, что это упрощено (их совместимость лучше в моем реальном коде, он проверяет наличие нулей и т. д.).
Давайте сначала посмотрим исходную (не предварительно загруженную) версию:
<ImageView
android:id="@+id/imageViewMyGraphicalImageElement"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop"
android:src="@drawable/my_graphical_element" >
</ImageView>
Предварительно загруженная версия имеет следующий XML (обратите внимание, что атрибут src отсутствует):
<ImageView
android:id="@+id/imageViewMyGraphicalImageElement"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:scaleType="centerCrop">
</ImageView>
И фрагмент кода предварительной загрузки:
sBitmap = bitmapBitmapFactory.decodeResource(context.getResources(), R.drawable.my_graphical_element, options);
// 'sBitmap' is a Bitmap reference, while 'options' is BitmapFactory.Options
Наконец , место, где я его установил:
setContentView(R.layout.main);
...
ImageView imageViewMyGraphicalImageElement= (ImageView) findViewById(R.id.imageViewMyGraphicalImageElement);
imageViewMyGraphicalImageElement.setImageBitmap(sBitmap);
Вопрос: Очевидно, решение на основе xml знает об изображении до того, как вызывается setContentView(...). Версия с предварительной загрузкой устанавливает изображение после этого вызова. Есть ли разница? Могут ли из-за этого быть пропущены автомасштабирование или другие действия системы?