Android: 如何停止属于另一个应用程序的服务?

Android: how to stop service belonging to another application?

我有几个使用共享库的应用程序,当用户打开其中一个应用程序时,它会启动一项服务。理想情况下,无论打开了多少应用程序,此服务只有一个实例 运行。

例如,用户打开启动服务的应用程序"A"。然后用户打开应用程序 "B",它检测到服务是 运行,停止它,然后重新启动服务本身。

这是否可以在 Android 中通过 运行 服务在它自己的进程中或通过其他方法来完成?

如果:

  • 服务导出,并且
  • 允许您与该服务对话的权限,并且
  • 您知道如何制作 Intent 来识别服务

然后 stopService() 应该工作,假设服务可以停止(例如,没有绑定的连接到它)。 stopService()不限于自己进程中的服务

这里的关键是安全,确保可以以某种方式停止服务而其他人不能。这不是特别容易,这就是为什么您不认为这是一种常见模式。

在您的情况下,如果您的服务实例已经 运行。

,也许更好的解决方案不是停止现有服务并启动新服务,而是让一切保持原样。