【问题标题】:android Bitmap caching for ViewPager issueViewPager问题的android位图缓存
【发布时间】:2012-08-07 19:47:22
【问题描述】:

我有一个带有 ImageView 作为子视图的 ViewPager。 ImageView 显示从网络加载和/或缓存到本地缓存的位图,实现为基于 LruCache 的类(来自 Android 支持库)。问题是当从 LruCache 中删除图像时,GC 似乎没有释放或释放太晚的位图内存。即使从 LruCache 和 ViewPager 的持有 ImageViews 中删除了旧位图(我从 ViewPager 中删除了视图),我在从网络/磁盘加载新位图时也经常遇到 OutOfMemory 异常。我读到有时(?)您必须调用 Bitmap.recycle(在 Android 3.0 之前),但这不起作用。它也不适用于 ICS(我不在那里调用 Bitmap.recycle)。 如何解决这个问题?

【问题讨论】:

    标签: android caching bitmap android-viewpager


    【解决方案1】:

    如果某些东西仍在引用它,垃圾收集器将不会回收您的位图。我想你的位图上有 ImageViews。 ViewPager 不会回收 View,因此您需要在 ImageView 未显示时清除它。

    【讨论】:

      【解决方案2】:

      您可以查看来自 android 开发者site 的 BitmapFun 示例,了解如何有效地显示位图。该示例已经包含图像的 GridView 和 ViewPager,您可以在构建应用程序时参考这些图像。尽管该示例有一些缓存issue,但我已经做了一些工作。您可以查看here。

      【讨论】:

        【解决方案3】:

        问题不在于处理很多图像,而是当您的活动被销毁时,您的图像没有被释放。

        如果不查看您的代码,很难说出为什么会这样。不过,本文有一些提示可能会有所帮助:

        http://blog.booking.com/android-reuse-bitmaps.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-04-16
          • 1970-01-01
          • 2014-02-24
          • 2015-12-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多