我对 Android 还是很陌生,所以在协调 Activity 生命周期与我所知道的并且能够用作桌面应用程序开发人员时,我仍然存在问题。几周前我在这里写了一个问题,关于我正在尝试制作的一个非常简单的应用程序。我努力的结果并不完全是成功。当我旋转我的手机时,当前的活动被破坏并重新启动(正如我研究的文献所说的那样),这导致它重新初始化某些对象并且行为不正确,我无法在应用程序完成后终止它是什么应该的。
这个实验让我清楚地知道,我需要进一步教育自己如何使用活动进行编程。我花了一些时间寻找有关如何处理此活动问题的指南、技术和最佳实践。令我沮丧的是,我找不到任何简洁有用的东西。(相信我,我现在没有精力去阅读另一本 Android 书籍的封面。)我现在能取得进步的唯一方法就是实际编程。
所以我只是决定翼它。我的第一个想法是,如果无论应用程序状态如何,我的活动都被左右谋杀,我需要创建一些可以在后台运行的东西。我创建了一个控制器类,它本质上将运行节目、保持应用程序状态、运行计时器等等。活动将通过静态工厂方法在 OnCreate 中获得引用,如果您愿意,这应该确保它们始终具有正确的基本单例模式。然后活动将简单地显示来自控制器的数据并传递任何用户交互。
如果我对 Android 机制的理解是正确的,这应该可以工作。但这让我思考。如果一个 Activity 可以在任何时候被系统杀死以释放资源,那么一个不是 Activity 的类呢?我可以指望它在应用程序运行期间一直保持活动状态,还是它也可以在任何时间点被杀死?
无论如何,应用程序何时终止?我在我的应用程序的最后一个屏幕上放置了一个“退出”按钮,我试图告诉 Android“用户已请求应用程序结束,所以请终止它”。到目前为止,我还没有成功。我知道像 Sygic 之类的某些应用程序在你告诉它们时会退出(或者至少我假设这是基于应用程序的行为)但到目前为止我所阅读的所有内容似乎都建议我应该将 Home 活动调用到前面(或堆栈中我的应用程序活动之前的任何活动)并忘记它。我有时会在几天不使用我的应用程序后回到我的应用程序,并且它处于我上次离开它的状态。它一直在不必要地运行吗?我该如何预防?
我知道 Android 会根据需要终止活动,但它是否对整个应用程序执行相同的操作?什么构成应用程序的终止,以及如何以及何时发生?