如何在我的 Android 应用程序中管理长 运行 单例

How to manage long running singletons in my Android app

我正在构建我的 iOS 应用程序的 Android 版本,可以使用一些关于如何实现某些功能的指导。

该应用有多项职责;监控位置变化并将它们添加到数据库中,通过 Bonjour 通告和发现可用的对等点,维护与发现的对等点和服务器的连接,并通过蓝牙 LE 通告和监听附近的对等点。

为了组织它们,我为每个职责(例如 LocationManager、BonjourManager 等)创建了 'Manager' 单例 类。我在应用启动时启动它们,在应用终止时停止它们。

显然,当用户未与应用交互时,我不希望它们 运行 在后台运行。在 iOS 这很简单;每个管理器都为生命周期通知注册自己,在 appDidEnterBackground 暂停并在 appDidEnterForeground.

恢复

我的问题是:我如何 'manage' Android 中的这些管理器,以便他们在应用程序对用户不可见时停止 运行 并在应用程序打开时恢复再次?据我所知,当应用程序在后台和前台之间切换时,没有全局 onPauseonResume 被调用。

我研究过使用 BoundServices,但我需要在 every activity 和 every 管理器之间进行绑定,以便经理在所有活动解除绑定之前不会被销毁?

求助!我有一种感觉,管理者可能不是让这些活动保持活力的正确方法......

Application class 中初始化您的服务。 终止由“系统”处理...

public void onTerminate ()

This method is for use in emulated process environments. It will never be called on a production Android device, where processes are removed by simply killing them; no user code (including this callback) is executed when doing so.

也许这可以帮助 http://www.whosebug.com/questions/20912229/... 跟踪 onStart 等的东西。