当我有这样的xml布局时:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_image" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_image" />
然后在内存中有2个与可绘制对象相关联的位图实例,或者只有一个?
我已经查看了源代码,看起来它将为每个ImageView创建新的位图实例。所有这一切都要经历一个麻烦的过程...
ImageView使用Drawable
Drawable使用ImageDecoder
ImageDecoder使用BitmapFactory
BitmapFactory使用native C++ code进行图像解码。 (请看第157行及以下)
简短地看代码会告诉我,即使使用相同的图像,它也会为每个ImageView创建新的位图实例。我没有找到与这种优化相关的任何逻辑。