我是靠谱客的博主 无心雨,最近开发中收集的这篇文章主要介绍startService和bindService的使用Service 生命同期startService 和bindService 区别startService & stopService的生命周期使用场景,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 & stopService的生命周期

1、单独使用startService & stopService
2、单独使用bindService & unbindService
3、startService与bindService混合使用
使用场景:在activity中要得到service对象进而能调用对象的方法,但同时又不希望activity finish的时候service也被destroy了,startService和bindService混合使用就派上用场了。
(1)先调用startService,再调用bindService,生命周期如下:

startService(new Intent(this, MyService.class));
bindService(new Intent(this, MyService.class), mServiceConnection, Context.BIND_AUTO_CREATE);

onCreate() -> onStartCommand() -> onBind()

(2)先调用bindService,再调用startService,生命周期如下:

bindService(new Intent(this, MyService.class), mServiceConnection, Context.BIND_AUTO_CREATE);
startService(new Intent(this, MyService.class));

onCreate() -> onBind() -> onStartCommand()
(3)先调用startService又调用了bindService,他们对应的是同一个service对象吗?
是的。

使用场景

  • 如果想要启动一个后台服务长期进行某项任务,那么使用startService
  • 如果只是短暂的使用,那么使用bindService。
  • 如果想启动一个后台服务长期进行任务,且这个过程中需要与调用者进行交互,那么可以两者同时使用,或者使用startService + BroadCast / EventBus等方式
  • 对于既使用startService,又使用bindService的情况,结束服务时需要注意的事项:Service的终止,需要unbindService和stopService都调用才行;

参考:
startService和bindService的区别,生命周期以及使用场景
【Android】startService和bindService混合使用总结

最后

以上就是无心雨为你收集整理的startService和bindService的使用Service 生命同期startService 和bindService 区别startService & stopService的生命周期使用场景的全部内容,希望文章能够帮你解决startService和bindService的使用Service 生命同期startService 和bindService 区别startService & stopService的生命周期使用场景所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部