这是场景:
我有一项要在设备启动时启动的服务。
该服务将侦听多播数据包并向用户发送通知。
为了让服务在系统启动时开始运行,我需要定义一个接收器来监听包含以下操作的意图android.intent.action.BOOT_COMPLETED
,然后它将启动服务。
如果我有 N 个应用程序,它们都希望该服务正在运行,并且我在所有应用程序中定义了相同的接收器,我假设 N 个服务将启动。
有什么方法可以防止同一服务的多个实例运行?
这是场景:
我有一项要在设备启动时启动的服务。
该服务将侦听多播数据包并向用户发送通知。
为了让服务在系统启动时开始运行,我需要定义一个接收器来监听包含以下操作的意图android.intent.action.BOOT_COMPLETED
,然后它将启动服务。
如果我有 N 个应用程序,它们都希望该服务正在运行,并且我在所有应用程序中定义了相同的接收器,我假设 N 个服务将启动。
有什么方法可以防止同一服务的多个实例运行?
Android 服务实际上是单例,这意味着任何时候都只会有一个实例在运行。
https://groups.google.com/forum/?fromgroups#!topic/android-developers/qv-z0HM5afo
根据API 文档,每次调用startService()
都会触发onStartCommand()
事件;但是,如果该服务已在运行,则不会启动该服务的新实例。