在Android

时间:2015-08-12 23:27:27

标签: android memory bitmap out-of-memory

我一直试图解决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

但它没有说出如何在离开活动时从内存中删除图像

1 个答案:

答案 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);

我在某个地方找到了这个,但我不记得在哪里。