Chinaunix首页 | 论坛 | 博客
  • 博客访问: 562925
  • 博文数量: 192
  • 博客积分: 3780
  • 博客等级: 中校
  • 技术积分: 1487
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-26 10:11
文章存档

2012年(6)

2011年(160)

2010年(26)

分类: 嵌入式

2011-06-30 17:22:02

一、 Android Service 介绍

Android  Service 分为两种: Android Service  Native Service 

Android Service :又称为 Java Service ,是实现在框架层( framework )里的 Server  Android Service  Java 编写。

Native Service :又称为 System Service ,是实现在 Runtime 层里的 Server 

 MediaPlayer 为例,从下图我们可以得出两种服务的关系:

 

 

接下来要讨论的 Service  Native Service ,与应用程序设计上所讨论的 Service  android.app.Service )不同。

 

二、为什么要写底层的核心服务呢?

 1  因为底层核心服务是 Android 框架里最接近 Linux/Driver 的部分。为了充分发挥硬件设备的差异化特性,核心服务是让上层 Java 应用程序来使用 Driver/HW Device 特色的重要管道。

 2  在开机过程中,就可以启动核心服务 ( 例如汉字输入法服务等 ) ,让众多应用程序来共享之。

 3  由于共享,所以能有效降低 Java 应用程序的大小 (Size) 

 

三、如何实现一个核心服务呢 ?

要点如下:

 1 )核心服务通常在独立的进程 (Process) 里执行。

 2 )必须提供 IBinder 接口,让应用程序可以进行跨进程的绑定 (Binding) 和呼叫。

 3 )因为共享,所以必须确保多线裎安全 (Thread-safe) 

 4 )以 C++ 类别定义,诞生其对象,透过 SM 之协助,将该对象参考值传给 IServiceManager::addService() 函数,就加入到 Binder Driver 里了。

 5 )应用程序可透过 SM 之协助而远距绑定该核心服务,此时 SM 会回传 IBinder 接口给应用程序。

 6 )应用程序可透过 IBinder::transact() 函数来与核心服务互传数据。

阅读(1844) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~