如何在 android recycleview 上管理太多项目的内存

How to manage memory with too many items on android recycleview

我正在开发一个 android 社交媒体类型的应用程序,其中有多个选项卡 activity。这些选项卡是使用 viewpager.I 的片段,有一个带有回收站视图的主屏幕。 post 上有图像。 post 的 recyclerview 存在内存问题。如果有用的话,我正在使用 firebase 作为数据库。要加载图像视图,我正在使用 glide,我正在执行磁盘缓存并跳过内存缓存。

我遇到的问题是

  1. 当加载了太多 post 时,recyclerview 会变得缓慢和滞后(我知道还有其他 post,但找不到任何有用的东西)。

  2. 当我点击来自 post 的用户名时,一个新的配置文件 activity 启动,其中也包含该用户的所有 post,我是试图找到一种清除主页选项卡回收站视图内存的方法,但正在努力寻找方法。

为了解决第一个问题,我设置了一个 onscrolllistner,每当您接近 post 列表的末尾时,它会加载 10 个新的 post。回收器视图适配器目前最初加载 20 个项目,然后 on.but 我不确定如何以有效的方式清除旧的 posts,因为我希望用户能够向上滚动。

为了解决第二个问题,在主屏幕片段中,当我启动新的 activity 时,将调用 onPause() 函数。在 onpause() 函数中,我尝试将列表设置为空,将 recyclerview 适配器设置为空,将 recylerview 设置为空,但没有任何效果。在 android 分析器工具中,我看到我正在使用 200 MB 内存,当我启动新的 activity 时,它又增加了 100 MB 左右。我尝试了手动垃圾收集,但它也不起作用。具体来说,本机内存在分析器中跳跃。我测试并确保这只是因为 recyclerview 中的图像。

我不确定为什么当我将 recyclerview、adapter 和 post 列表设置为 null 时,为什么 posts 中的图像仍然保留在内存中。

  1. Glide 缓存图片
  2. 加载多个post检查分页库
  3. 当移动到细节片段并清除主页片段的 reacyclerview 时,我不建议这样做,因为下次用户切换到主页选项卡时,用户将不会保存他之前离开的先前状态。