【问题标题】:Use of bitmaps increases RAM usage使用位图会增加 RAM 使用率
【发布时间】:2016-10-07 06:45:09
【问题描述】:

我正在开发一个 Android 应用程序,其中有两个活动使用 RecyclerView 和包含图像的自定义布局。 要加载图像,我有:

ImageView imgView = (ImageView)itemView.findViewById(R.id.imgView);
Bitmap bitmap1 = BitmapFactory.decodeResource(context.getResources(), R.drawable.led);
imgView.setImageBitmap(bitmap1);

我认为在活动的 onDestroy() 方法中,如果图像作为位图加载,GC 将能够释放一些空间,但是这并没有发生,并且 RAM 内存的使用会增加,直到应用程序崩溃OOM 错误。

谁能帮我找出问题所在?

【问题讨论】:

  • 为位图添加回收调用,Android 不会自动释放它们
  • 这是一个问题。你为什么不使用 imgView.setImageDrawable() ?您无需将可绘制对象解码为位图即可将其设置为 ImageView。
  • 是否需要将drawable转换为位图? android 将 drawable 共享给具有相同 drawable 的视图。
  • @SamiKuhmonen,Android 确实会自动回收位图,但如果您不再使用 Bitmap,调用 recycle() 仍然是个好主意。

标签: android bitmap android-recyclerview android-image


【解决方案1】:

您不需要仅将可绘制资源显示到 ImageView 的位图。你可以直接这样做!

imgView.setImageResource(R.drawable.led);

【讨论】:

  • 我什么时候需要使用位图?要加载保存在设备中的图像并给出路径?
  • @mireia 您最初的问题是关于可绘制图像的。将另一个问题添加为将本地设备图像显示到 RecyclerView
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 1970-01-01
  • 2011-10-20
  • 2021-06-23
  • 2019-11-05
  • 1970-01-01
相关资源
最近更新 更多