Android中Service的onStartCommand()方法返回值和参数含义

当通过startService(intent)方法启动一个Service时,会调用Service的onStartCommand()方法。该方法有3个参数:intent、flags、startId。有4个返回值:START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT、START_STICKY_COMPATIBILITY。

 

一 返回值含义

1.START_STICKY:

当某个服务被系统杀死时(不是正常结束服务),如果返回值为START_STICKY,则系统会尝试重启该服务,并且调用服务的onStartCommand()方法,但是onStartCommand()方法的Intent参数为Null。

2.START_NOT_STICKY:

当某个服务被系统杀死时,如果返回值为START_NOT_STICKY,则系统不会重启该服务。

3.START_REDELIVER_INTENT:

当某个服务被系统杀死时,如果返回值为START_REDELIVER_INTENT,则系统会尝试重启该服务,并且调用服务的onStartCommand()方法,并且会创建之前启动服务时传入的Intent,即onStartCommand()方法的Intent参数不为Null。

4.START_STICKY_COMPATIBILITY:

这是START_STICKY的兼容版本,不能保证onStartCommand()方法一定会被重新调用。

 

二 参数含义

1.Intent:就是startService()方法里传入的intent。

2.flags:int类型变量,总共有3种类型的flag:

(1)0:当该服务是通过startService()方法正常启动的时候,flag值为0。

(2)START_FLAG_REDELIVERY:当该服务是被杀死后重新启动的时候,且之前onStartCommand()方法返回值为START_REDELIVER_INTENT时,flag值为START_FLAG_REDELIVERY。

(3)START_FLAG_RETRY:如果在启动服务时onStartCommand()方法没有被调用,会再次尝试调用,flag值为START_FLAG_RETRY。

3.startId:每一次启动服务时的startId值都是不同的,通过startId来标识每次的启动服务。

你可能感兴趣的:(Android基础知识)