我正在我的应用中运行前台服务,我需要确定它们是否在我的活动中运行。
从我的搜索中,我发现这是一种选择:
private fun isMyServiceRunning(serviceClass: Class<*>): Boolean {
val manager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
for (service in manager.getRunningServices(Int.MAX_VALUE)) {
if (serviceClass.name == service.service.className) {
return true
}
}
return false
}
但是:
getRunningServices(Int):已弃用。
因此,我正在使用三种方式之一。
- 使用onResume将服务绑定到活动。 但我认为这对于仅检查服务是否正在运行的小事有些过度。
- 使Intent公开并检查其是否为空,但可能存在某些情况,其中Intent不为空但服务未运行。
- 检查前台服务持久通知是否处于活动状态,但这是一种解决方法。
检查服务是否正在运行的最正确的方法是什么?