【发布时间】:2019-08-26 23:47:37
【问题描述】:
我正在开发一个 android 社交媒体类型的应用程序,其中我有一个多选项卡活动。选项卡是使用 viewpager 的片段。我有一个带有回收站视图的主屏幕。帖子上有图片。我对 post 的 recyclerview 有内存问题。如果有帮助,我将使用 firebase 作为数据库。要加载图像视图,我正在使用 glide,我正在做磁盘缓存并跳过内存缓存。
我遇到的问题是
当加载太多帖子时,recyclerview 会变得缓慢和滞后(我知道还有其他帖子与此相关,但真的找不到任何有用的东西)。
当我单击帖子中的用户名时,会启动一个新的个人资料活动,其中还包含该用户的所有帖子,我正在尝试找到一种清除主页选项卡 recyclerview 内存的方法,但不知道如何去做。
为了解决第一个问题,我设置了一个 onscrolllistner,每当您接近帖子列表的末尾时,它就会加载 10 个新帖子。回收器视图适配器当前最初加载 20 个项目,然后以此类推。但我不确定如何以有效的方式清除旧帖子,因为我希望用户能够向上滚动。
为了解决第二个问题,在主屏幕片段中,当我启动新活动时,会调用 onPause() 函数。在 onpause() 函数中,我尝试将列表设置为空,recyclerview 适配器为空,recyclerview 为空,但没有任何效果。在 android profiler 工具中,我看到我正在使用 200 mb 内存,当我启动新活动时,它又增加了 100 mb 左右。我尝试了手动垃圾收集,但它也不起作用。具体来说,本机内存在分析器中跳跃。我已经测试并确保这只是因为 recyclerview 中的图像。
我不知道为什么当我将 recyclerview、adapter 和帖子列表设置为 null 时,为什么帖子中的图像仍然保留在内存中。
【问题讨论】:
-
您可以在适配器类中尝试onViewRecycled。这是为了记忆清晰,也许它会对你有所帮助。
标签: java android android-recyclerview android-memory