我的应用程序使用一些带有 SurfaceView 的位图。对于经常记忆起的位图,我将它们存储为类字段,即当我创建 SurfaceView 实例的扩展时,我有
bitmap_puppyicon = BitmapFactory.decodeResource(getResources(),R.drawable.puppy);
其中 bitmap_puppyicon 是我的扩展 SurfaceView 的类变量。我认为,这意味着它在堆上。
对于使用一次或两次左右的位图,我在 onDraw() 方法中即时创建它们。
我检查了 DDMS 中的堆,觉得我可以将更多位图存储为类变量,而不是在 onDraw() 中创建它们。
令我惊讶的是,在执行此操作后堆大小下降了几个百分点。我误解了什么吗?为什么存储的位图越多,堆越小?
最佳答案
它在引擎盖下使用 skia,堆不是位图所在的地方,在堆中你只有位图的链接
关于android - 位图和 Android 堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9098049/