我一直试图解决OutOfMemoryError
崩溃一段时间。
问题
我知道内存使用的来源:
- 我的应用程序在每个活动上使用相同的背景图像
- 我使用MPAndroidChart
库来制作图表
- 来自我们平面设计师的其他图标和位图。
我查看了Android Studio中的内存使用视图。 当我从活动A转到活动B时,内存从(例子)40到60 mb 然后当我从活动B回到活动A时,它再次从60升到80
问题
当我转到B时,如何清除活动A中使用的位图所占用的内存? (假设,根据记忆图的观察结果,它在进入A-> B时将它们保留在记忆中)
由于所有活动在后台使用相同的图像,如何阻止应用程序在其他活动中再次将其加载到内存中,并让它重复使用? (假设它没有)
更新
我已经阅读了有关加载位图的Android开发人员文档:
https://developer.android.com/training/displaying-bitmaps/load-bitmap.html
但它没有说出如何在离开活动时从内存中删除图像
答案 0 :(得分:2)
我对Android很新,但这就是我修复OutOfMemory的方法:
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSampleSize = 4;
BitmapDrawable background = new BitmapDrawable(getResources(), BitmapFactory.decodeResource(getResources(), R.drawable.image, options));
background.setTileModeX(android.graphics.Shader.TileMode.REPEAT);
bar.setBackgroundDrawable(background);
我在某个地方找到了这个,但我不记得在哪里。