我开发android应用程序并存在内存管理问题。我有能力穿越无限的道路,就像:
User activity that contains followers of user (U) -> Another user (U) -> post (P) -> U -> U -> P -> ... etc所以,基本上我只是通过启动新的活动来实现的,但是我注意到当我打开大约6-7个活动时,它会因为内存错误而崩溃。每次活动都开始消耗越来越多的记忆。首先,- finish()以前的活动在开始新的活动之前是不好的,因为我需要让用户完全返回。第二,我试着用
FLAG_ACTIVITY_REORDER_TO_FRONT 使用已经启动的活动,而不是启动新的活动。但它不是在第一次使用时就重新绘制的。例如,当我恢复post活动时,当它第一次出现时,它会与前一篇文章一起出现,但是当我返回并再次打开它时,所有的功能都很好。但还是没有运气。
组织这种无限堆栈的最佳方法是什么?它能够使堆栈存储,例如5-6之前的步骤,并关闭非常深的活动。例如,它能够将完整的活动状态存储到某些存储中并手动组织活动堆栈吗?
问候
发布于 2016-06-10 11:05:05
评论中没有足够的地方来写我所有的东西,这就是为什么我试图描述解决方案的原因。正如我所看到的,在内容交换流中没有不同的功能。那么,你知道回收模式吗?您可以创建一些类似于适配器的东西,其中只有两个片段(用于用户和post)实体,其中数据绑定将从键值映射生成。这张地图你必须在前面的装订期间创建。如下所示:映射stackMap ->Activity ->插入用户片段->添加用户id映射为键->替换片段为post >添加post id映射为用户密钥->替换为user->添加键以映射.等等。用于回溯使用地图?按相反的顺序(取id、获取数据、将数据绑定到片段)。
内存比活动实例化更好。
P.S:你不仅可以用键值组织你的堆栈,还可以用数组或链接列表,甚至可以用堆栈对象实体作为数组列表。
发布于 2016-06-08 14:48:30
尝试在清单中的活动中设置android:launchMode="singleInstance"。(答案https://stackoverflow.com/a/9598551/2808913提供)
如果其中一个活动是您的“家”活动,您通常在应用程序中开始并返回到的活动,您可以将其设置为FLAG_ACTIVITY_CLEAR_TOP。这样,每次您返回到此活动时,您的背靠背都将被清除。按后退按钮将使你退出应用程序,而不是回到以前的活动。
https://stackoverflow.com/questions/37705456
复制相似问题