我有一项服务,当我启动它时,安排警报管理器在00:00运行, 我想检查我的服务是否正在运行?
当我签入设置 - >应用程序 - >运行任务,我的服务存在于缓存进程中,因此下面的代码无法正常工作,因为我的服务注意到运行服务,是否可以帮助我?
private boolean isServiceRunning(String serviceName) {
ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE);
List<ActivityManager.RunningServiceInfo> l = am.getRunningServices(50);
Iterator<ActivityManager.RunningServiceInfo> i = l.iterator();
while (i.hasNext()) {
ActivityManager.RunningServiceInfo runningServiceInfo = (ActivityManager.RunningServiceInfo) i.next();
if( runningServiceInfo.service.getClassName().equals(serviceName) ) {
return true;
}
}
return false;
}
答案 0 :(得分:2)
BindService将返回false:
返回
如果您已成功绑定到该服务,则返回true;如果是,则返回false 没有建立连接,因此您将不会收到服务对象。
我会用它来检查服务是否没有运行。
请确保不要与AUTO_CREATE标志绑定,否则也会创建服务。
答案 1 :(得分:1)
我在活动中使用以下内容:
private boolean isMyServiceRunning() {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
if (MyService.class.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}