android - 如何获取正在运行的服务并从 Activity 中手动停止它?

标签 android service

在我的应用程序中,我创建了一个服务,假设 MyService,我想做的是,如果我不在应用程序中,我只想运行它。因此,当我打开我的应用程序时,我想检查 MyService 的任何实例是否正在运行/存在。如果发现我想阻止它。当我退出时,我的应用程序将使用 Intent 再次启动该服务。

我发现的大多数搜索结果都建议使用 stopService() 方法。但是只有当我有指向该服务的 Intent 时我才能使用它,对吗?但到目前为止,我发现的关于“搜索”过程的唯一解决方案建议使用 getSystemService(Context.ACTIVITY_SERVICE)。但是我通过它只得到一个 RunningServiceInfo 对象。我如何使用此对象停止正在运行的服务?

如果这不可能,那么完成我在这里尝试做的事情的最有效方法是什么?

最佳答案

无论服务是否运行,您都可以调用stopService(),因此您无需检查它是否正在运行。如果是,它将被停止并且 stopService() 返回 true;否则 stopService() 返回 false(但听起来您并不关心返回值)。

参见 documentation for stopService() .

getSystemService() 对于查找您自己的服务有用,它用于查找系统级服务,如 ActivityManager 或 AlarmManager。

关于android - 如何获取正在运行的服务并从 Activity 中手动停止它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32027213/

相关文章:

android - 如何在我的 Activity 中存储来自 API 的数据

wpf - 我是否可以在MVVM设计模式下从ViewModel或Model调用服务?

android - Kivy:从主应用程序停止 android 服务

java - android.app.RemoteServiceException : Bad notification for startForeground

java - 使用 Android 注释绑定(bind)到现有服务?

android - 你如何在 android 中调用 web 服务,即使 Activity 在后台,它也会继续等待响应?

android - 使用标签和使用按钮(试图让它看起来像标签)有什么区别?

android - 如何将 View 置于屏幕外?

android - Status 表示 Draft in Prod

java - InetAddress.getByName 失败 getaddrinfo 工作