Android Service的分类详解

按照启动方式分类

谷歌官网对Service的分类



Service根据启动方式分为两类:StartedBound。其中,Started()是通过startService()来启动,主要用于程序内部使用的Service,而Bound是通过bindService()来启动,允许多个应用程序共享同一个Service

Started Service

1.startService()来启动

startService通过Activitycontact

调用startService(service).


2,一旦启动,就运行在后台,即便启动它的对象(Activity)都销毁了

3,通常只启动,不返回值

4,通常网络上传或者下载,操作完成后,自动停止

onStartCommand()

onStartCommand服务里面的方法

Bound Service

1,bindService()来绑定

  会调用bindService来绑定

2,提供客户端服务器接口来启动

  它有个客户端和服务器段的模型

3,发送请求,得到返回值,甚至通过IPC来通讯

ipc内部进程通讯来进行通讯。

4,一个服务可以被多个调用者绑定,只要有一个绑定者,服务运行,所有绑定者都退出,服务退出

  我现在同样是一个服务,我可能用Activity A跟它绑定一下,B跟他绑定一下,当我A退出了的时候,由于B还绑定的,所以这个服务还不会退出。

  就是当所有的绑定者都退出了,我们的服务才会退出。

onBind()

  他会用到的一个重载方法叫onBind

  按服务性质分

Local Service

  本地服务,指的就是同一个进程,用于应用程序内部

  功能:用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。

  使用:在Service可以调用Context.startService()启动,调用Context.stopService()结束。在内部可以调用Service.stopSelf()Service.stopSelfResult()来自己停止。无论调用了多少次startService(),都只需调用一次stopService()来停止。

Remote Service

  远程服务,在android里面远程指的是不同的进程之间也会有服务器端客户端的模型,用于android系统内部的应用程序之间。

  功能:可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。

  使用:可以定义接口并把接口暴露出来,以便其他应用进行操作。客户端建立到服务对象的连接,并通过那个连接来调用服务。调用Context.bindService()方法建立连接,并启动,以调用Context.unbindService()关闭连接。多个客户端可以绑定至同一个服务。如果服务此时还没有加载,bindService()会先加载它。

  按实现方法分类

Java Service

Native Service

  原生服务就是我们用cc++,实现的系统级的服务我们可以把它当成在library内层。

Native Service,这是Android系统里的一种特色,就是通过C++或是C代码写出来的,供Java进行远程调用的Remote Service,因为C/C++代码生成的是Native代码(机器代码),于是叫Native Service。随着Android系统的性能需求越来越高,Native Service需求将越来越高。


  在Service里面要用到它,就不需要再manifest里面配置好,有了配置就知道,manifest所有的元素都是类,所以我们肯定有个Service的类。

Service的配置很简单,就是配置一下它的名字就好了。


原文链接:http://www.maiziedu.com/wiki/component/classify/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值