【发布时间】:2016-06-08 14:31:52
【问题描述】:
我开发 android 应用程序并遇到内存管理问题。我有能力通过无限的方式导航:
User activity that contains followers of user (U) -> Another user (U) -> post (P) -> U -> U -> P -> ... etc
所以,基本上我只是通过开始新活动来完成它,但我注意到当我打开大约 6-7 个活动时,它会因内存错误而崩溃。每次活动开始吃越来越多的记忆。 首先 - 在开始新的活动之前完成()以前的活动并不好,因为我需要让用户完全回来。 其次,我试图用
修复它FLAG_ACTIVITY_REORDER_TO_FRONT
使用已经启动的活动,而不是开始新的活动。但它不会在第一次使用时重新绘制它。例如,当我第一次恢复帖子活动时,它与以前的帖子一起出现,但是当我返回并再次打开它时一切正常。但仍然没有运气。
组织这种无限堆栈的最佳方式是什么?它能够使堆栈存储例如 5-6 个先前的步骤并关闭非常深的活动。例如,它是否能够将完整的活动状态存储到某个存储并手动组织活动堆栈?
问候
【问题讨论】:
-
有可能,但方法不对。如果您的情况看起来像无限循环,请使用 Fragments 而不是活动
-
而且,顺便添加更多代码或您的草稿窗口切换流程。它可以更容易理解
-
我在一个可以无限导航的类似应用中工作。该应用程序是一个非常注重照片的应用程序,它的照片任务依赖于
Picasso。首先,不幸的是,这就是 Android 的工作方式。这很可悲,但事情就是这样。但对我来说,只有 6 或 7 个活动似乎很少,这表明您可能在某个地方发生了内存泄漏。在我的应用程序上,我可以在遇到问题之前轻松进行 60 次活动。所以我建议您检查github.com/square/leakcanary 以尝试找出您的应用程序可能存在的漏洞。 -
@once2go 我知道这在 Android 的情况下是不好的方式,但这是我们需要解决的任务。我们将使用片段而不是活动的任何方式都不会真正相信这会解决问题。而且我认为这种方式比使用许多活动更错误。您可以查看 pinterest 应用程序:它具有无限堆栈,您可以通过堆栈一直返回。