Android 服务(二)BindService

一 服务除了上一篇提到的方式,还有一种就是BindService,那么大家肯定有疑问了,为什么会采取BindService这种方式呢?

1、采用Bound Services方式,不仅可以启动服务,还可调用服务里面的方法;
  

2、但BindService方法不会引发OnStartCommand事件,故也无StartCommandResult可利用;绑定的意义在于服务方法的调用;

也就是说,当我们想调用服务里面的某一个方法时,就需要BindService这种形式了。

所以绑定服务的意义完全在于调用服务里面的方法。

二 服务的生命周期(从创建到销毁)有两条路径:

被启动的服务(startedservice)

         当服务被一个组件通过startService()函数启动后,这个服务就会独立的运行,必须被自己用stopSelf()函数或者其他组件用stopService()函数来停止。一旦服务被停止,系统就会销毁它。

绑定的服务(bound service)

         当一个服务被另一个组件通过bindService()函数创建后,客户就会通过IBinder接口和服务进行交互。客户可以通过unbindService()函数关闭连接(解除绑定 )。多个客户可以绑定到同一个服务,当所有客户都关闭和服务连接(解除绑定 )后,系统会销毁服务(服务没有必要自己停止自己)。

 

这两条路径并不是完全分离的。这是因为你可以绑定一个被启动的服务(started service)。例如,一个音乐播放服务可能被startService()函数启动来播放一首歌曲。过了一会儿,可能用户想要在播放器做一些操作或者获取关于当前歌曲的信息,一个activity就会通过bindService()函数绑定到该服务。started service + bindService 这种情况下,调用stopService()或 stopSelf() 不会真的停止服务,直到所有绑定的客户都解除绑定(关闭连接)。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值