我需要在后台运行一个服务,而它一直被Android杀死我需要一次又一次地启动它。由于一些编程目的,我需要知道服务是否正在运行。那是因为我会同时启动第二个服务,并且它会继续启动两次。
到目前为止我已经尝试过了:
private boolean isServiceRunning() {
ActivityManager manager = (ActivityManager) getApplicationContext().getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager
.getRunningServices(Integer.MAX_VALUE)) {
if (NotificationService.class.getName().equals(
service.service.getClassName())) {
return true;
}
}
return false;
}
但正如我所读到的那样,只有当我的服务以
开始时才有可能startService(Intent);
因为我每隔2分钟用AlarmManager启动我的服务,例如我不知道如何检查服务是否正在运行。也许如果你有一个想法,我怎么能避免服务启动方法两次以上,我会很满意。
答案 0 :(得分:0)
在服务方面
首次创建服务时会调用onCreate()
方法。
你可以在其中做所有声明。
onStartCommand()
当你尝试通过报警管理器调用它时,会一次又一次地调用。
如果您希望服务不被杀死,那么您可以在不同的进程上运行该服务。为此您需要进程间通信(IPC)。
为此,您可以在清单文件中声明服务,如下所示:
<service
android:name="myservice"
android:process=":my_process">
<service>
在android:process行中的冒号(:) my_process告诉android系统进程的名称是my_process,并且:告诉它是声明它的应用程序的私有。