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

3

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

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

在安卓系统中,通过使服务在自己的进程中运行或其他方法,是否可以实现这一点?


这是什么 - 到底这个“什么”具体指什么? - CommonsWare
"This" 指的是停止由另一个应用程序启动的服务。 - David Vail
1个回答

3

如果满足以下条件:

  • 服务已被导出,
  • 权限允许您与该服务通信,并且
  • 您知道如何构建一个 Intent 来标识该服务

那么假设该服务可以停止(例如没有绑定到它的连接),则 stopService() 应该可以运行。 stopService() 不仅限于在您自己的进程中的服务。

关键在于安全性,确保某种方式下只有 可以停止服务而 他人 不能。这并不是特别容易的事情,这就是为什么您不会看到这是一种常见模式的原因。

在您的情况下,也许更好的解决方案不是停止现有服务并启动新服务,而只是让事情保持不变,如果您的服务实例已经在运行。


其实我太过于关注“如何”而忽略了“为什么”。在你的情况下,也许更好的解决方案不是停止现有服务并启动一个新服务,而是如果你的服务实例已经在运行,则不要去管它,保持现状。这对我的使用情况来说完全可行。 - David Vail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接