我制作了一个可以启动长期存在的后台服务的应用程序。有时,应用程序本身已关闭,并且服务一直在运行,这是我想要的方式。
问题是在调用者应用程序关闭后,我不知道如何控制该服务。例如,如果用户重新打开该应用程序,我想给他们选择是终止该进程还是使其继续运行。
我可以使用以下功能(从this solution获取)来检测服务是否正在运行:
private boolean isMyServiceRunning(Class<?> serviceClass) {
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service :manager.getRunningServices(Integer.MAX_VALUE)) {
if (serviceClass.getName().equals(service.service.getClassName())) {
return true;
}
}
return false;
}
我尝试过从活动中调用此行,但这没做任何事情:
if(isMyServiceRunning(MyService.class)) {
stopService(new Intent(this, MyService.class));
}