BitmapFactory.Options.inBitmap的一些困惑

时间:2015-06-30 14:47:27

标签: android bitmap

众所周知,如果设置了BitmapFactory.Options.inBitmap选项,那么采用Options对象的解码方法将在加载内容时尝试重用现有的位图。我的问题是:

  1. 如何运作

  2. 如果我重用一个使用位图,那么重用的位图将会发生什么

  3. 如果出现这种情况:屏幕上同时出现两个图像,一个重复使用另一个图像,然后使用两个位图重复使用的图像。
  4. 如何正确使用inBitmap

1 个答案:

答案 0 :(得分:1)

首先,如果您将Bitmap对象作为inBitmap提供,则应确保不再在任何其他地方使用提供的Bitmap作为其内容最有可能被新数据(新像素)取代。 其次,您必须确保提供的Bitmap具有与所需操作相同的分辨率和像素类型。

那么什么时候应该使用inBitmap参数?每当您可以重用与您想要创建的Bitmap类似的Bitmap时。你为什么要用它?因为它比不这样做更有效率。如果您提供可重用的Bitmap,它在内存中占用的空间将用于新的空间;系统不必在内存中分配新空间(通常位图需要大量内存空间),垃圾收集器不必回收它。

何时不应使用参数?当您仍在使用旧let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate let window = appDelegate?.window window.addSubview("yourActivityIndicator") 时,或者分辨率或像素类型与新版本不匹配时。

希望这能回答你的问题。