我正在使用itemTouchHelper在swipe上从RecyclerView中删除cardView 我的cardview很简单它只有文字和图像 但是,当我轻扫以移除卡消失但永远不会被占用内存(我说这是因为图像的内存永远不会消失,它会导致内存不足异常) 我的代码非常简单所以我想知道是否有一个步骤我搞乱了告诉回收器视图从内存中删除? 我的代码与this一个
完全相同答案 0 :(得分:1)
通常情况下,图像会加载到Android内存中,根据设备屏幕分辨率要求进行缩放,并保留在那里直到进程死亡,或被杀死或被垃圾收集器收集。
卡片视图中的图像大小(或res
文件夹中的其他图像)可能很大,而按android缩放后的图像占用的内存过多会导致内存异常。尝试缩小图片尺寸(尝试将尺码与google icons的图标尺寸进行比较,它们都小于Kb,太棒了!)。
如果上述方法不起作用,请在drawable-nodpi
文件夹中创建一个res
文件夹,并将大尺寸图片放入此文件夹中,这表示android不会缩放这些图像并将其渲染为它是。 (确保在遵循此方法后在所有屏幕设备中进行测试,因为现在图像不会以不同的屏幕尺寸进行缩放)。
最后,如果上述任何一项操作都无法在用户执行刷卡操作后尝试运行System.gc()
。这将运行垃圾收集器,您的图像将从内存中删除。 (这种方法不能保证垃圾收集器在所有设备上都能正常工作,因此请确保您尝试使用上述两种方法,它们应该可以正常工作)。
希望这有帮助!