Android 使用 Bitmap 时图片有时不加载问题

442 阅读1分钟

问题描述:在项目中使用Bitmap展示图片,app启动时加载没有问题,但是在重复打开关闭页面多次后,图片不展示了,通过调试发现BitmaoFactory.decodeFile()方法解析位图返回了一个空值,能确定传入的参数没有任何问题。

出现原因:BItmap资源占用内存较大,在退出页面后其占用内存未被释放,任然占据大量内存,重复打开页面多次每次都会创建新的bitmap对象,内存很快被占满,导致内存不足,解析位图失败。

我的解决方法:在退出界面时,主动调用bitmap.recycle() 方法释放bitmap的内存占用。

private fun clearAdapter(){
    val faceList = mAdapter?.allItems
    // 位图资源占用内存较大,主动释内存
    faceList?.forEach { it ->
        it.bitmap?.recycle()
    }
}