Android的Service

  Service的特点是没有界面,不受用户打扰,概念上类似Linux的Daemon,在摆脱了与终端的联系之后,就能够长期在后台运行了。(当然,本质上Service只是一个对象和一些代码片段,和Activity一样,Service缺省运行在进程的主线程中,所以需要注意的是,如果Service有耗时操作还是需要创建另外的线程来完成的)


  由于没有界面,相比Activity,Service因而简单了不少,不用布局,也不用处理用户交互,只需要处理好LifeCycle就行了。Service的LifeCycle根据控制方式可分为两种。

  • 一种是用startService()/stopService()控制Service的启停。
  • 一种是用bindService()/unbindService()连接断开Service。在连接上Service时,可以调用Service提供的方法。


  使用连接断开Service的Bind模式有几种实现方式:

  1. 在同一个进程内,简单多了,可以直接访问对象,就可以直接进行强制类型转换。
  2. 不在同一个进程中,可以考虑使用Messenger。Messenger的底层其实也是用AIDL(Android Interface Definition Language)来实现,只不过封装好后,开发者不用直接和AIDL打交道,直接使用Messenger的接口就行了。当然队列化以后,Service不能同时处理多个请求,只能一个处理完后再处理下一个,这点和IntentService相似。
  3. 使用AIDL就能够同时处理多个请求了,AIDL比较复杂,不过好在底层的处理都由编译器处理了,因而开发者要做的其实只是自定义接口和实现接口,然后依葫芦画瓢按固定的形式把通道搭起来。

  除了自己实现Service,系统提供了一些有用的Service,当然都是Bind模式的,开发者可以通过Context.getSystemService()获取相应的对象(这些对象内封装了访问Service的接口),然后访问Service。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值