Android的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在任何Context下都一样

多个Context对同一个Service调用bindService,该Service只会在第一次bind的时候回调onBind,之后的bind不会回调。

通过startService启动的Service,如果在onUnbind中return true,全部context解绑后但是还没有调用stopService或者stopSelf来关闭,此时Service依然在运行,下次再有context来bind的时候,会回调onRebind(见下图)。

参考文献

https://stackoverflow.com/questions/8788103/android-service-onbindintent-and-onunbindintent-is-called-just-once/8794930

https://developer.android.com/guide/components/bound-services#Basics

Share

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注