Service的启动模式以及onStartCommand的重载

#Service启动顺序
##startService调用
###在启动Service的时候,如果是第一次启动Service调用顺序为onCreate->onStartCommand->onStart;销毁Servie时调用onDestroy函数;
###在开启Service的时候如果Service已经被创建则直接调用onStartCommand函数,不再调用onCreate函数
##bindService调用
###bindService调用时,若Service没有被创建调用bindService首先会onCreate然后再onBind,正常的调用顺序是首先startService再bindService
###在销毁时首先unbind函数,之后再stopService
#onStartCommand函数
###Service如果在调用stopService以及stopSelf之前停止,即发生异常停止了服务,服务会再次自动启动,在启动时会首先调用onStartCommand函数再调用onStart函数,因此在onStartCommand函数中返回一个返回值,用来表示服务的启动方式。
###函数体:onStartCommand(Intent intent, int flags, int startId)此函数有一个返回值,返回值的值可能是START_STICKY、START_NOT_STICKY、START_REDELIVER_INTENT。
###START_STICKY:在服务被杀死后保留服务的状态为初始状态,但不保留传入的Intent,重新启动服务调用onStartCommand时,如果没有其他启动命令传递到Service中的话,此时Intent的值为空
###START_NOT_STICKY:在服务被意外杀死时,不会重新启动服务
###START_REDELIVER_INTENT:服务被意外杀死后,会自动重启服务,重新启动时会保留Intent

你可能感兴趣的:(android)