我有一个Android Widget,配置活动和一个充满功能的大量使用的Android服务。我想维护可以从上述任何位置引用的全局应用程序状态/状态。我所指的状态是应用程序域特定状态。例如STARTED,LEVEL1,LEVEL2等。所以我想知道以下内容:
1)Global Singleton在保持状态/状态与子类化方面有什么优势 Android应用程序并将其用作Singleton?
2)我希望状态是可恢复的单身人士。因此我需要在应用程序时将其保存 获得关闭,进程终止。保存整个申请状态的正确位置在哪里?可以覆盖Application上的terminate方法,但不能保证它被调用。所以我也在寻找保存应用程序状态的重点。我不清楚。 Activity不是全局应用程序,也不是小部件和服务,所以我在哪里可以告诉应用程序正在关闭/终止并保存应用程序状态。
3)在Application.onStart()中初始化状态是否有问题?
答案 0 :(得分:0)
为什么不使用服务?这是一个保持现场状态的好地方。 AFAIK保证Service是单例,onCreate()和/或onStartCommand()提供适合初始化的位置。我不清楚任何保证onDestroy()被调用,但文档似乎会说:
“服务既可以启动也可以绑定绑定。在这种情况下,只要启动服务或者使用Context.BIND_AUTO_CREATE有一个或多个连接,系统就会保持服务运行。一旦这些情况都不成立,就会调用服务的onDestroy()方法,并且服务有效终止。“ ref
答案 1 :(得分:0)
1)Global Singleton有什么优势可以保持这种状态/状态与子类化Android应用程序并将其用作Singleton?
如果“Global Singleton”是指一个静态数据成员,那么无论如何都没有任何优点或缺点,恕我直言。
2)我希望状态是可恢复的单身人士。因此,当应用程序关闭,进程终止时,我需要将其保存。保存整个申请状态的正确位置在哪里?
每次变化,或多或少。
Activity不是全局应用程序,也不是小部件和服务,所以在哪里可以告诉应用程序正在关闭/终止并保存应用程序状态。
你没有被告知。因此,每次更改时都会保存它。您的静态数据成员,Application
对象或任何其他是持久数据的缓存 - 其他所有内容都会遭到彻底破坏。 (在这里插入邪恶的疯狂笑声)
3)在Application.onCreate()中初始化状态是否有问题? (校正的)
我认为你的意思是onCreate()
。您位于主应用程序线程上,因此I / O可能会在onStart()
中启动,但应该在AsyncTask
或其他后台线程上启动。