我有几个应用程序使用一个共享库,在用户打开其中一款应用程序时会启动服务。理想情况下,无论打开多少这些应用程序,只会运行一个服务实例。
例如,用户打开应用程序"A",它会启动服务。然后用户打开应用程序"B",它检测到该服务正在运行,停止它,然后重新启动服务本身。
在安卓系统中,通过使服务在自己的进程中运行或其他方法,是否可以实现这一点?
我有几个应用程序使用一个共享库,在用户打开其中一款应用程序时会启动服务。理想情况下,无论打开多少这些应用程序,只会运行一个服务实例。
例如,用户打开应用程序"A",它会启动服务。然后用户打开应用程序"B",它检测到该服务正在运行,停止它,然后重新启动服务本身。
在安卓系统中,通过使服务在自己的进程中运行或其他方法,是否可以实现这一点?
如果满足以下条件:
Intent
来标识该服务那么假设该服务可以停止(例如没有绑定到它的连接),则 stopService()
应该可以运行。 stopService()
不仅限于在您自己的进程中的服务。
关键在于安全性,确保某种方式下只有 您 可以停止服务而 他人 不能。这并不是特别容易的事情,这就是为什么您不会看到这是一种常见模式的原因。
在您的情况下,也许更好的解决方案不是停止现有服务并启动新服务,而只是让事情保持不变,如果您的服务实例已经在运行。