【发布时间】:2017-05-11 11:54:26
【问题描述】:
我正在构建一个带有标签导航的安卓应用。 每个选项卡都有自己的后台堆栈,并在用户浏览应用程序时将片段堆积到后台堆栈中。
问题是当我在片段之间导航时(使用FragmentTransaction 的替换方法),使用毕加索加载图像的imageView 也保留其状态。这最终会导致 OOM 错误。
我想在替换片段时释放图像内存并在重新访问时恢复状态。我正在考虑以下方法来解决这个问题。
- 释放用于适配器的内存(
ListAdapter,FragmentAdapter, ...) (大部分图片都是这些适配器中的物品的展示) - 调用
adapter.clear()清除分片内容。 - 仅清除
ImageViews' 内容(如果可能的话..)
我什至不确定其中是否存在实现这些功能的正确方法。 这样做的正确方法是什么?
【问题讨论】:
-
只是一个警告:如果您的目标是 Android 4.x,那么您的方法可能还不够。 Android 4.x 在图像方面存在严重问题。在您结束活动之前,它基本上无法释放相关的内存,这在您的应用程序中似乎从未发生过。解决该问题的唯一库是Fresco。但是,它比毕加索更具侵略性。
-
遇到同样的问题,你有解决办法吗?很有趣!
标签: java android android-fragments picasso