我们有两种方式启动一个Service,他们对Service
生命周期的影响是不一样的。
1 通过startService
Service会经历 onCreate -> onStartCommand, stopService的时候直接onDestroy
如果是调用者(TestServiceHolder)自己直接退出而没有调用stopService的话,Service会一直在后台运行。
下次TestServiceHolder再起来可以stopService。
2 通过bindService
Service只会运行onCreate, 这个时候 TestServiceHolder 和TestService绑定在一起
TestServiceHolder 退出了,Srevice就会调用onUnbind->onDestroyed所谓绑定在一起就共存亡了。
所以,有时候,我们直接在Application或者主UI中bindServer,应用退出是,自动调用onUnbind->onDestroyed退出Service
其实还有第三种,就是跨进程通信:AIDL。这也可以启动服务。