gpt4 book ai didi

java - Android - 检查启动服务是否正在运行

转载 作者:行者123 更新时间:2023-12-01 12:42:04 24 4
gpt4 key购买 nike

我的应用程序在启动时运行一个服务(Service.java)。我需要知道当您手动启动应用程序(在 Main.java 中)时我的服务是否仍在运行。按照我在 onCreate 中 Main.java 上的代码:

if(isMyServiceRunning(Service.class)){
System.out.println("Still running");
}

isMyServiceRunning 函数:

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

问题是,即使服务仍在运行,isMyServiceRunning也会返回 false!怎么解决?

最佳答案

我将使用 getter/setter 在应用程序对象中创建一个 boolean 成员,而不是使用这种方法。在服务 onCreate() 中,您将设置该标志,然后您可以从 Activity 内的任何点查询该标志。

在您的应用程序对象类中(假设为 MyApplication.java):

private boolean serviceRunning = false;

public boolean isServiceRunning() {
return serviceRunning;
}

public void setServiceRunning(boolean serviceRunning) {
this.serviceRunning = serviceRunning;
}

然后,在服务的 onCreate() 中:

((MyApplication)getApplication()).setServiceRunning(true);

然后,从 Activity 中的任意点检查服务的状态:

if(((MyApplication)getApplication()).isServiceRunning()){
//do the stuff here
}

希望有帮助。

关于java - Android - 检查启动服务是否正在运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25007583/

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