【发布时间】: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