我已阅读关于checking if a service is running的其他线索,但这不适用于我。如何判断我的未绑定服务是否正在运行?
我的情况是,我正在创建一个后台Web服务器服务,但没有绑定到它,因为我希望它在活动结束后继续运行。该服务会创建一个通知,以便用户可以看到它正在运行。用户可以通过活动上的按钮停止服务。
这一切都工作正常,除了活动的启动,我不能确定服务是否已经运行。现在用的是以下几点:
if (isMyServiceRunning() == false)
{
Intent ws = new Intent(this, WebServerService.class);
startService(ws);
}
这
private boolean isMyServiceRunning() {
String sClassName;
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
sClassName = service.service.getClassName();
DebugMsg("Service: " + sClassName);
if (sClassName.contains("com.<mydomain>.webservice"))
{
return true;
}
}
return false;
}
我得到的服务的列表上运行,对于系统和第三方服务。但是我的服务没有出现在列表中,尽管我知道它正在运行。如果我进入手机的设置 - >应用程序 - >运行服务,我可以看到它在那里运行。
我在文档中的某处读到,在已经运行的服务上调用startService应该被忽略。但事实并非如此,因为我可以在调试器中看到OnCreate和OnStart都被调用。
重要的是,我不会每次都创建一项新服务,因为后台服务可能正处于服务文件的中间。该活动不需要与服务进行任何通信 - 只能在未运行时启动它,并在用户点击按钮时将其杀死。
关于为什么我的服务没有显示在getRunningServices列表中的任何想法?
btw将getSystemService(..)列表在我所有的本地服务?!我不觉得嘘..:S – Ewoks