Service作为几大组件之一使用非常频繁,也有一些相对深入的知识点,但是也有很多比较浅显的特性,却与我们更加息息相关,记住这些特性,性价比极高。
- 通过
bindService
方式启动的Service通过同样数量的unbindService
可以关闭,且每一个调用了bindService
的Context
需要分别调用unbindService
- 通过
startService
启动的Service
经过同样数量的bindService
和unbindService
之后,仍然需要通过stopService
关闭。如果提前调用stopService
也关闭不掉,需要与bindService
相同数量的unbindService
被调用后,之前调用的stopService
才会生效,此时Service
才会关闭
- 在同一个
Context
下bindService
多次,实际上只相当于bind了一次,可通过一次unbindService
就关闭
bindService
尽量在Activity
的Context
下调用,不要在Application
的Context
下调用
startService
与stopService
在Application
或者Activity
的Context
下都一样
- 多个
Context
对同一个Service
调用bindService
,该Service
只会在第一次bind的时候回调onBind
,之后的bind不会回调。
- 通过
startService
方式启动的Service
,如果在onUnbind
中return true
,那么在全部Context
解绑后但是还没有调用stopService
或者stopSelf
来关闭时,此时Service
依然在运行,下次再有Context
来bind的时候,会回调onRebind
(见下图)。
参考文献
https://developer.android.com/guide/components/bound-services#Basics