话题:清晰地理解Service。
1、Service的start和bind状态有什么区别?
(1)命令式启动服务:其他组件调用startService()启动服务,Service不随启动它组件的销毁给Destroy,多次startService(),生命周期onCreate()会执行一次,onStartCommand()会执行多次。
(2)绑定式启动服务,其他组件调用bindService()绑定服务,Service会随启动它组件的销毁而先onUnBind()后onDestory(),多次bindService(),onBind()只会执行一次。
2、同一个Service,先startService,然后再bindService,如何把它停止掉?
没有顺序要求,既要unBindService(),还要stopService,Service才会停止!
3、你有注意到Service的onStartCommand方法的返回值吗?不同返回值有什么区别?
(1).START_STICKY:onStartCommand()方法返回START_STICKY时,如果kill掉当前Service,系统会执行该服务的onCreate()和onStartCommand,但是启动它的Intent为空!(类似于车祸后苏醒,但失忆了)
(2).START_NOT_STICKY:onStartCommand方法返回START_NOT_STICKY时,如果kill掉当前Service,系统不会执行该服务的onCreate()和onStartCommand!!(类似于车祸后over了)
(3).START_REDELIVER_INTENT:onStartCommand()方法START_REDELIVER_INTENT时,如果kill掉当前Service,系统会执行该服务的onCreate()和onStartCommand!!并且启动它的Intent不为空!(类似于车祸后苏醒,还有记忆)
(4).START_STICKY_COMPATIBILITY:返回START_STICKY_COMPATIBILITY时,如果kill掉当前Service,系统会执行该服务的onCreate(),但不会执onStartCommand!!(不知道类似于啥啦)
4、Service的生命周期方法onCreate、onStart、onBind等运行在哪个线程?
Service 生命周期方法运行在主线程中!