0

请稍等片刻,然后阅读。

在我的问题之后 ,有没有办法创建一个控制实例来控制我的应用程序的多个活动?

并在阅读后检测应用程序何时关闭

我想知道...我的应用程序中有很多活动和一些服务,我可以访问设备拥有的所有硬件。只要应用程序正在运行,访问这些东西就有意义。活动可以改变,但每个活动都需要访问这些东西(有点夸张)。

我知道两种似乎适合我需要的方法。

1)我扩展应用程序并在那里实例化一些对象,这些对象可以访问或计算任何地方都需要的东西

2)我在 Activity 的子类中做同样的事情

在这两种情况下,我都想注销广播接收器并停止服务。服务不受约束(出于某种原因)。那么在所有可能发生的情况下,关闭和注销事物的正确方法是什么?

  • 可能没有调用 onDestroy

  • 我没有收到系统关闭/杀死我的进程的通知

那么,我如何创建始终存在于我的所有活动中但在我的应用程序关闭时停止并清理的东西?!

4

1 回答 1

1

你不能,永远永远不会在 Android 中创建“永远存在”的东西,它根本不是架构的一部分。即使使用 startforeground 服务,如果设备内存不足或处于睡眠状态,您的服务仍然可能被破坏(并且正如您所指出的那样,不能保证调用 ondestroy)。

我发现在准意义上保持“永远活着”的最可靠方法是使用 RTC_WAKEUP 设置重复警报时间表并使用 WAKE LOCK。

然而,这些东西的问题是它们会像明天一样消耗电池!如果您只是在屏幕打开时关心所有这些事情,那么不精确的重复 RTC 警报(不带唤醒锁定)似乎适用于大多数情况。

编辑:我有点间接地回答了你的问题,但除了上述之外,当你完成一个资源时,将它声明为 null 或取消注册它。如果你有注册了东西的长期服务并且Android决定终止你的服务而不调用onDestroy,那么你无能为力,继续前进(并确保你将你的状态保存在持久存储中,这样你就可以在下一次初始化时以它们上次离开的状态检索它们。)

于 2012-12-04T17:20:56.723 回答