众所周知,如果设置了BitmapFactory.Options.inBitmap选项,那么采用Options对象的解码方法将在加载内容时尝试重用现有的位图。我的问题是:
如何运作
如果我重用一个使用位图,那么重用的位图将会发生什么
答案 0 :(得分:1)
首先,如果您将Bitmap
对象作为inBitmap
提供,则应确保不再在任何其他地方使用提供的Bitmap
作为其内容最有可能被新数据(新像素)取代。
其次,您必须确保提供的Bitmap
具有与所需操作相同的分辨率和像素类型。
那么什么时候应该使用inBitmap
参数?每当您可以重用与您想要创建的Bitmap
类似的Bitmap
时。你为什么要用它?因为它比不这样做更有效率。如果您提供可重用的Bitmap
,它在内存中占用的空间将用于新的空间;系统不必在内存中分配新空间(通常位图需要大量内存空间),垃圾收集器不必回收它。
何时不应使用参数?当您仍在使用旧let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate
let window = appDelegate?.window
window.addSubview("yourActivityIndicator")
时,或者分辨率或像素类型与新版本不匹配时。
希望这能回答你的问题。