3
我正在使用该函数在调用服务之前查找服务是否已在运行,以便服务在其已经运行时不会启动: -为什么检查服务是否正在运行,是否给出错误
private boolean iSR() {
String sClassName;
ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
sClassName = service.service.getClassName();
if (sClassName.contains("com.abc.def.Service_name"))
{
return true;
}
}
return false;
}
而且我需要在单独的进程中运行服务,否则会导致应用程序变慢。因此,在清单: -
<service android:name=".Service_name" android:process=":my_process" > </service>
但是,如果该服务正在运行,并调用该函数时,它会给错误是这样的: -
..java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xyz.abc/com.xyz.abc.main}: java.lang.NullPointerException
为什么会这样呢?任何帮助,高度赞赏。
你确定manager不是null吗?你可以在那里加一张支票吗?在您提供的堆栈跟踪中没有行号,很难预测发生了什么。 – kosa 2012-02-01 17:15:40
是的,经理不是空的。在服务真正运行时,当函数(iSR())正确返回true时,执行“Service_name.mThis.stopSelf();”行会发生问题。 ''mThis''是一个公共静态变量(声明为public static Service_name.mThis = null;并且在'onStartCommand()'mThis = this;'onDestroy'mThis = null。 – 2012-02-02 02:10:02