我希望您可以帮助我了解Android生命周期以及如何在活动之间管理多种类型之间的导航。假设以下情形:
我想过将所有活动保存在静态管理器中。如果活动已启动,则经理会查看之前是否已启动。如果是,请恢复上一个活动,否则启动startActivity(ActivityA)。这是处理这些导航的好方法吗?如何通过代码直接恢复活动的实例? 或者还有另一种方法可以更好地完成这项工作吗?
提前致谢! 问候, faiko
答案 0 :(得分:1)
一旦活动离开堆栈,您将无法“缓存”活动。活动开始非常快,我猜你的数据库那些让你失望的东西。您可以做些什么。
理论上,如果你知道用户要多次从A - >点击条目。 B,您可能只想在活动A中将数据库内容加载到内存中,然后发送它via Parcel into B.然后当您返回到A时,它仍然在内存中,它将立即返回到B.
如果您不确定这是否属实,请尝试调试并单步执行。您将看到活动很快启动,但您需要确定哪些操作滞后。从上面的描述可能是你的数据库调用,但它可能是其他的东西,如网络电话或其他长期电话
答案 1 :(得分:0)
Android活动的生命周期使得无法启动新意图但保持旧状态。
您应该通过保存字段来保存活动的状态,并在需要时将其恢复到此状态。
答案 2 :(得分:0)
您无法在已发布的方案中恢复活动的实例。因为由于android生命周期,当您按活动B上的后退按钮时,活动被销毁,包含其所有状态和信息。
获取信息的一个选项是扩展Application类并将信息保存到应用程序类中的一些变量中。虽然如果系统需要内存,你可以做很多垃圾收集。我不相信即使使用Jameo的解决方案也有任何好的方法可以使活动持续存在,如果活动A被杀死,那么如果从活动B返回活动A,则重新加载该活动并且数据库访问必须再次发生。