面试题一:service 的生命周期,两种启动方式的区别
startService
onCreate() -> onStartCommand() -> onDestroy()
bindService
onCreate() -> onbind() -> onUnbind()-> onDestroy()
两种启动方式的区别:
1. 启动
如果服务已经开启,多次执行 startService 不会重复的执行 onCreate()
, 而是会调用 onStart()
和 onStartCommand()
。
如果服务已经开启,多次执行bindService时,onCreate和onBind方法并不会被多次调用
2. 销毁
当执行 stopService 时,直接调用 onDestroy 方法
调用者调用 unbindService 方法或者调用者 Context 不存在了(如Activity被finish了),Service就会调用 onUnbind->onDestroy
- 使用
startService()
方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服 务仍然运行。 - 使用
bindService()
方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,