onStartCommand 返回的不同标志指定在 onStartCommand 返回后应如何重新启动服务, START_NOT_STICKY 标志的documentation表示:

从onStartCommand(Intent,int,int)返回的常量:如果此服务的进程在启动时被终止(从onStartCommand(Intent,int,int)返回后),并且没有新的启动意图要传递给它,然后将服务从启动状态中取出,并且在将来显式调用Context.startService(Intent)之前不要重新创建 . 该服务不会接收带有null Intent的onStartCommand(Intent,int,int)调用,因为如果没有要传递的待处理Intent,它将不会重新启动 . 这种模式对于想要在启动时做一些工作的事情是有意义的,但是在内存压力下可以停止并且稍后会再次明确地开始做更多的工作 . 这种服务的一个例子是轮询来自服务器的数据:它可以通过让警报启动其服务来安排警报每N分钟轮询一次 . 当从警报中调用onStartCommand(Intent,int,int)时,它会在N分钟后安排新的警报,并生成一个线程来进行网络连接 . 如果在执行该检查时其进程被终止,则在警报响起之前不会重新启动该服务 .

如果 onStartCommand 在执行 onStartCommand 并且 Service 完成它需要在 onStartCommand 中完成的工作时无法被杀死,我不明白需要不同的标志 .