我有一个让我烦恼的问题。
使用Android,每次创建一个新的活动实例时,我都会看到一个似乎在调用onCreate
的应用程序,因为这个活动是另一个活动的儿子,它在结束时自行完成一个数据的作用。
每次调用onCreate
似乎都在重新解析XML以创建视图并重新附加/重新创建代码的侦听器等等。那么,如果我们点击移动设备中的后退按钮,是否有办法缓存每次都要调用的活动,而不会看到它?这就像让它真正隐藏(无法通过后退按钮访问),只有在必要时才会被破坏。
提前感谢大家:)
答案 0 :(得分:6)
Android将处理最适用的视图和活动缓存,您不必担心它。我 - 强烈反对亚历克夏的做法。这非常幼稚,只会恶化性能,造成内存泄漏,导致错误行为。
如果您觉得Activity经常被创建,我建议您确保正确使用和理解Activity生命周期。与每个系统一样,Android在效率和可重用性之间取得平衡,并且总是需要权衡。
您提到的常见误解涉及解析XML。视图的XML不是作为纯XML存储,而是以编译形式存储以提高效率。您不必担心这一点,相信系统正在努力为您提供尽可能高效的服务。
答案 1 :(得分:1)
如果它被调用,则意味着您的进程已完成执行或被系统杀死。
每次活动开始时都会调用onCreate
。这就是Activity lifecycle的工作方式,你可以做的并不多。
如果您希望自己的流程保留在内存中,则应考虑将其实施为Service。
答案 2 :(得分:0)
您不能阻止在每次创建活动时调用onCreate,因为这是工作的方式。
这里的问题更多是一个架构问题:你有一个经常使用的功能,但是你会为它投入大量的活动。
如果您正在寻找速度和响应能力,则回答者可以是ViewFlipper。您定义了一个唯一的活动,当您使用您的功能时,您只需更改视图。你整个应用程序一开始就被加载,然后它会留在内存中,直到Dalvik需要一些。您可以在开源应用astrid的代码中找到一个非常复杂的示例。