在启动服务之前,有没有一种方法可以检查服务是否已经在运行?
如果它可以在服务的onCreate()中完成,那就更好了。
谢谢!
如果您尝试再次启动服务,它将保持运行状态。但是,无法启动两次同一个服务。查看 Android 文档。
我刚在 Android 9 (API 28) 上进行了测试,你可以使用相同的Intent
无限次启动同一个服务:
onCreate() {
startMyService();
startMyService();
startMyService();
startMyService();
startMyService();
startMyService();
startMyService();
startMyService();
startMyService();
startMyService();
}
private void startMyService() {
Intent serviceIntent = new Intent(this, MyService.class);
ContextCompat.startForegroundService(this, serviceIntent);
}
避免这种情况的一种方法是在启动之前通过传递相同的Intent
来停止它:
private void startMyService() {
Intent serviceIntent = new Intent(this, MyService.class);
stopService(serviceIntent); // <<<<< this line makes sure that you don't start it twice or more times
ContextCompat.startForegroundService(this, serviceIntent);
}
在服务中使用布尔值/标志来修复它。 (一个服务只能启动一次)