【问题标题】:Handling with Bitmaps in RecyclerView在 RecyclerView 中处理位图
【发布时间】:2016-04-14 19:29:43
【问题描述】:

我有一个带有位图的recyclerView。另外,我使用LruCache。我应该在何时何地回收位图以免得到OutOfMemoryError

【问题讨论】:

  • 您是否发现了特定问题?为什么不限制缓存的大小,让位图像往常一样被垃圾收集?
  • @DougStevenson,我有 LruCache 但我的应用程序仍然崩溃 :( 我认为是因为有对这些位图的引用
  • OOM 可能有很多原因,而不是位图。考虑分析您的应用程序,看看哪些是最严重的分配违规者。另外,请确保您的缓存有大小上限,以免它变得太大。

标签: android bitmap out-of-memory android-recyclerview


【解决方案1】:

有一组很棒的官方资源称为Displaying Bitmaps Efficiently,应该可以帮助您解决问题。但是,正确处理图像并非易事,因此,如果您正在寻找现成且稳定的解决方案 - 请查看 PicassoGlide

【讨论】:

  • 谢谢,我会看一下,但我看到了 Displaying Bitmaps Efficiently.... 由于 OutOfMemoryError,我的应用程序仍然崩溃,因为我找不到回收位图的最佳位置
  • Netanel,我也遇到了 OutOfMemoryError,使用 BitmapFactory.Options.inSampleSize 属性缩小位图。也看看awesome lectures from Google
【解决方案2】:

在您的适配器中覆盖 onViewRecycled() 方法并回收位图。
希望这会有所帮助!!!

override fun onViewRecycled(holder: RecyclerView.ViewHolder) {
    super.onViewRecycled(holder)
    // do the bitmap recycling here
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 2011-08-15
    相关资源
    最近更新 更多