【问题标题】:Reducing Memory leaks Android减少内存泄漏 Android
【发布时间】:2015-06-18 11:34:56
【问题描述】:

在 android 中处理位图对象的图像时,我曾经回收它们以便在移动到下一个屏幕时进行保存。 但有时我不得不使用 drawable 而不是位图来处理这些问题。

像位图的bitmap.recycle()方法一样回收可绘制对象。

谢谢

【问题讨论】:

    标签: android memory-leaks bitmap android-drawable


    【解决方案1】:

    您可以使用第三方图像库。一些不错的库是:

    1. Nostra’s Universal Image loader

    2. Picasso

    3. UrlImageViewHelper 来自 Koush

    4. Volley – Android 团队@Google(主要是网络库

    5. Novoda’s Image loader已弃用

      另外你可以查看technotalkative blog了解更多详情:

    【讨论】:

    • #JustForRecords Novoda 已被弃用并且不再维护(比如说被放弃了),并且 Volley 主要用于图像的网络传输,因此当您想要只加载资源位图
    【解决方案2】:

    您可以使用库来更好地管理图像:

    我特意为您提供了库描述的链接,因此您至少可以在将它们放入项目之前了解它们。了解它们的用途和有关它们的基本概念,这将为您节省大量时间。

    这里是如何将HolderPattern 应用到您的列表以避免一遍又一遍地创建新对象。我再次建议您仔细阅读,而不仅仅是复制粘贴。

    一个更有用的技巧和更多的学习材料 - Managing Bitmap Memory ;)

    欢迎来到 Android 开发 ;)

    【讨论】:

    • 感谢您的反馈我已经使用 Picasso、Fresco 甚至 Glide 进行图像缓存,但它们并不适合我的情况,并且对于回收视图和列表来说它工作正常同意。
    • 在这种情况下,你需要更好地阐述你的用例,否则没有人可以在这里帮助你..:S
    • 任何从内存中清除 Drawable 的方法,比如位图 bitmap.recycle() 都会很棒
    • 这不是它应该在较新的 Android 上工作的方式。可能您阅读了姜饼时代的一些教程。。正如我建议的那样,了解持有人模式以及如何通过不创建和销毁新对象来减少内存使用(尤其是当它们是巨大的位图时)。也许其他人会提供更令人满意的答案,您会接受.. ;) 祝项目好运 ;)
    • 是的,你可能是对的,我的游戏之类的项目使用了大量位图,而我处理图像的方式对于位图对象效果很好,我需要的只是一种回收可绘制对象的方法(不在列表视图内)和感谢 Holder 模式,我会深入研究的,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-31
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    相关资源
    最近更新 更多