我有一个让我很烦的问题。
对于 Android,我有一个应用程序,它似乎在onCreate
每次创建活动的新实例时都在调用,因为这个活动是另一个活动的儿子,它在结束其对一条数据的角色时完成自己。
每次的调用onCreate
似乎都是重新解析 XML 以创建视图并将侦听器重新附加/重新创建到代码等等。那么有没有一种方法可以缓存每次调用的活动,如果我们点击移动设备中的后退按钮而不会看到它?这就像将它真正隐藏起来(无法通过后退按钮访问)并且仅在必要时才销毁。
提前谢谢大家:)
Android 将处理大多数适用的视图和活动缓存,您不必担心。我强烈警告不要使用 alexkipar 的方法。这是非常幼稚的,只会降低性能,并造成内存泄漏和错误行为。
如果您觉得 Activity 的创建过于频繁,我建议您确保正确使用和理解 Activity 生命周期。与每个系统一样,Android 在效率和可重用性之间取得平衡,并且总是需要做出权衡。
您提到的一个常见误解涉及解析 XML。用于视图的 XML 不是作为纯 XML 存储的,而是为了提高效率而以编译的形式存储的。您不必担心这一点,相信系统正在努力使事情变得尽可能高效。
如果它被调用,则意味着您的进程已完成执行或被系统杀死。
onCreate
每次您的活动开始时都会被调用。这就是Activity 生命周期的工作方式,在那里你无能为力。
如果您希望您的进程保留在内存中,那么您应该考虑将其实现为Service。
您不能阻止 onCreate 在每次创建 Activity 时被调用,因为这是事情的工作方式。
您的问题更多是架构问题:您有一个经常使用的功能,但您将整个繁重的活动奉献给它。
如果您正在寻找速度和响应能力,答案可以是ViewFlipper。您定义了一个独特的活动,当您使用您的功能时,您只需更改视图。你的整个应用程序在一开始就被加载,然后它会留在内存中,直到 Dalvik 需要一些。您可以在开源应用程序astrid的代码中找到一个非常复杂的示例。