美文网首页
service难点

service难点

作者: 一顿一只牛 | 来源:发表于2019-06-19 20:42 被阅读0次

service学习加开发经验
startservice启动流程同act启动流程类似
(都是通过ams,流程图也不画了,毕竟网上那么多
可参考https://www.jianshu.com/p/4a20d9d68482
图2 类似于act的启动)
bindservice启动流程没去看。
生命周期
startservice:oncreate==》onStartCommand
调用多次startService,onCreate只有第一次会被执行,而onStartCommand会执行多次。
结束服务时,调用stopService,生命周期执行onDestroy方法,并且多次调用stopService时,onDestroy只有第一次会被执行。
开启服务以后,与activity就没有关联,不受影响,独立运行。

bindserviec:
1.onbind返回null:oncreare==》onbind
2.onbind不返回null:oncreare==》onbind==》onServiceConnected
用多次bindService,onCreate和onBind也只在第一次会被执行(onServiceConnected执行多次)。
调用unbindService结束服务,生命周期执行onDestroy方法,并且unbindService方法只能调用一次,多次调用应用会抛出异常。使用时也要注意调用unbindService一定要确保服务已经开启,否则应用会抛出异常。
开启服务以后,与activity存在关联,退出activity时必须调用。

注意:service可以同时start,bind。没有先后顺序。但oncreate只会执行一次。关闭的时候需要stop和unbind都调用,也没有先后顺序。如果只使用一种方式关闭,ondestory都不会被执行,服务也不会被关闭。
关闭服务需要stopService和unbindService都被调用,也没有先后顺序的影响,MyService的onDestroy也只执行一次。但是如果只用一种方式关闭服务,不论是哪种关闭方式,onDestroy都不会被执行,服务也不会被关闭。这一点需要注意。
最后,不管是start还是bind启动service,service的生命周期都运行在ui线程。

相关文章

网友评论

      本文标题:service难点

      本文链接:https://www.haomeiwen.com/subject/dcwefctx.html