android - 位图和 Android 堆

标签 android bitmap heap-memory surfaceview ddms

我的应用程序使用一些带有 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/

相关文章:

java - 单击按钮时 setText 不会更改或更新

android - 使用选项卡滑动 View : Activity or Fragment?

c++ - 在 Visual C++ 中删除调用后检测到堆损坏?

java - 更改android中位图的大小以避免OOM

java - 创建位图缩略图的ArrayList

java - 如何从java堆转储中查找缓存对象

c++ - 在没有new的情况下在堆上创建一个对象

android - 如何通过 Internet 接收 TCP 数据包

android - 是否有任何跨平台工具可以将响应式网站转变为 native 移动应用程序?

c++ - 将位图缩小到所需尺寸