Android Service

1 Service分类

         Android体系架构中,总的来说有两种服务,如下所示:


(1)系统服务:位于Framework层的服务,又分为:Java系统服务(也称为Android Service)和Native系统服务(Native Service);

(2)SDK Service(也称为应用层服务):位于App层,继承service类实现,分为:本地服务和远程服务。


2 SDK Service
        应用层Service有两种类型:

(1)本地服务(Local Service):只能进程本身使用;

(2)远程服务(Remote Service):通过RPC让多个应用程序复用。

类别

区别

优点

                            缺点

                                       应用

本地服务

该服务依附在主进程上

节约了资源,不需要IPC

主进程被Kill后,服务便会终止。

音乐播放服务

远程服务

该服务是独立的进程

有利于为多个进程提供服务,具有较高的灵活性。

占用一定资源,并且使用AIDL进行IPC

一些提供系统服务的Service,这种Service是常驻的。


2.1 Local Service

(1)通过调用Context.startServece()启动,调用Context.stoptService()结束,流程如下:

context.startService() -> onCreate() -> onStartCommand() -> Service running -> context.stopService() -> onDestroy() -> Service stop

(2)通过调用 Context.bindService()启动,调用 Context.unbindService()结束,还可以通过ServiceConnection访问Service。其流程如下:

context.bindService() -> onCreate() -> onBind() -> Service running -> onUnbind() -> onDestroy() -> Service stop


2.2 Remote Service

AIDL(Android Interface Definition Language)用于跨进程地实现多个应用程序共享同一个Service的功能。


3 系统服务
        native service和Java service的启动者是不一样的,但都是由service manager统一管理。


3.1 Native系统服务
        Navite服务是完全在C++空间完成的服务,主要指系统初始化时,通过Init.rc脚本启动的服务,例如Service Manager,Media service等,这些服务的PPID都是1。

3.2 Java系统服务
       Java服务是指在JVM空间完成的服务,虽然也要使用Native层的框架,但是服务主体存在于Java Framework。
       Java服务是初始化第二阶段(Init2)时建立的服务,由System Server负责启动Java framework层的所有Java系统服务,例如:Activity Manager Service,Package Manager Service,并交给Service Manager统一管理。需要指出的是:这些服务都只是system_server的一个子线程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值