onStartCommand方法返回有4种
- START_STICKY
- START_NOT_STICKY
- START_REDELIVER_INTENT
- START_STICKY_COMPATIBILITY
以下的情况都是在服务启动后,onStartCommand()返回值之后,服务被系统KILL了之后的情况描述。
START_STICKY 指系统会重新创建service,然后呢由于重新创建了service,那么onstartCommand方法就一定会被重新调用,如果这个时候,没有其他启动service的命令传过来,那么这个时候的Intent就是null,这里需要注意一下。
START_STICKY_COMPATIBILITY: 这个其实是用来兼容api5 一下的,这个的作用和START_STICK一样,但是这个返回值不能保证系统一定会重新创建service
START_REDELIVER_INTENT: 这个是指服务被重新创建后,直接将之前Intent的值传入,和上面START_STICK不同,这里的Intent不会为null。
START_NOT_STICKY: 这个就是系统被kill了,服务不会重新启动。
接下来看看我们的service源码
public @StartResult int onStartCommand(Intent intent, @StartArgFlags int