gpt4 book ai didi

android - 为什么检查服务是否正在运行时出错

转载 作者:太空狗 更新时间:2023-10-29 13:37:30 26 4
gpt4 key购买 nike

我正在使用该函数在调用它之前查找服务是否已经在运行,这样如果它已经在运行则服务不会启动:-

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;
}

而且我需要在单独的进程中运行服务,否则会导致应用程序变慢。因此在 list 中:-

<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

为什么会这样?非常感谢任何帮助。

最佳答案

如果您第二次从客户端执行 startService ,已经启动的服务(在您的情况下,已经创建了专用进程并且已经在服务组件上调用了 onCreate )将不会再次“启动”(除非服务已自行停止或在内存不足的情况下被系统终止)。但是,您的服务将收到多个 onStartCommand 调用。

因此,通常您不必检查服务是否正在运行,系统会根据是否需要启动和停止服务。

并且,在单独的进程中运行您的服务以加速您的应用程序可能表明您在应用程序主线程中做了很多事情。您应该重新考虑您的决定,因为如果您有两个进程而不是一个进程,您的应用程序通常会对系统产生更大的影响。

关于android - 为什么检查服务是否正在运行时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9100092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com