onStartCommand
返回的不同标志指定在START_NOT_STICKY
返回后应重新启动服务的方式,Service
标志的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
正在执行且Service
完成onStartCommand
所需的工作时,{{1}}无法被杀,我就不会# 39;了解对不同旗帜的需求。