【问题标题】:Loading, recycling and dismissing bitmaps for memory efficiency in Android在 Android 中加载、回收和关闭位图以提高内存效率
【发布时间】:2015-11-05 18:18:46
【问题描述】:

我一直在尝试解决 OutOfMemoryError 崩溃有一段时间了。

问题

我知道内存使用的来源: - 我的应用在每个活动中使用相同的背景图片 - 我使用MPAndroidChart 库来制作图表 - 我们的平面设计师提供的其他图标和位图。

我查看了 Android Studio 中的内存使用视图。 当我从活动 A 转到活动 B 时,内存从(示例)40 到 60 mb 然后当我从活动 B 回到活动 A 时,它又从 60 上升到 80

问题

  • 我去 B 时如何清除 Activity A 中使用的位图占用的内存? (假设,根据对内存图的观察,它在 A->B 时将它们保存在内存中)

  • 由于所有活动在背景上使用相同的图像,我怎样才能阻止应用程序在其他活动中再次将其加载到内存中,并让它重新使用它? (假设没有)

更新

我已经阅读了有关高效加载位图的 Android 开发者文档:

https://developer.android.com/training/displaying-bitmaps/load-bitmap.html

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

【问题讨论】:

    标签: android memory bitmap out-of-memory


    【解决方案1】:

    我对 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);
    

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

    【讨论】:

    猜你喜欢
    • 2013-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    相关资源
    最近更新 更多