美文网首页
startService和bindService的区别,生命周期

startService和bindService的区别,生命周期

作者: vanzh | 来源:发表于2019-05-14 11:45 被阅读0次

Service 生命同期

Service 生命同期

startService 和bindService 区别

startService: onCreate -> onStartCommand -> onDestory ,在多次调用startService的时候,onCreate不重复执行,但是onStartCommand会执行。startService调用了这后,会一直存在,直到其调用了stopService。
bindService : onCreate -> onBind -> onUnbind -> onDestory,多次调用bindService,onCreate及onBind都只执行一次。它生命周期跟随其调用者,调用者释放的时候,必须对该Service解绑,当所有绑定全部取消后,系统即会销毁该服务。 bindService 的方式通过onServiceConnected方法,获取到Service对象,通过该对象可以直接操作到Service内部的方法,从而实现的Service 与调用者之间的交互。

使用场景

如果想要启动一个后台服务长期进行某项任务,那么使用startService
如果只是短暂的使用,那么使用bindService。
如果想启动一个后台服务长期进行任务,且这个过程中需要与调用者进行交互,那么可以两者同时使用,或者使用startService + BoardCast/ EventBus 等方法。

对于既使用startService,又使用bindService的情况,结束服务时需要注意的事项:

  • Service的终止,需要unbindService和stopService都调用才行;

顺便提一下IntentService,与Service的区别在于它内部封装了一个工作线程,也就是说,在其内部onHandleIntent的代码都是在子线程里面工作的。

知识图谱

Service知识点.jpg

相关文章

网友评论

      本文标题:startService和bindService的区别,生命周期

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