免费下载

19深刻解析Android的AIDL界面.doc


文档分类:IT计算机 | 页数:约12页 举报非法文档有奖
1/ 12
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/ 12 免费下载
文档列表 文档介绍

在Android应用框架里,应用层级的软件大多是Java类别,而系统层级的软件大多是C或 C++类别。Android使用JNI接口来达成这个目标。例如,,当它搭配上JNI接口之后,。

图1-1

基于这样的架构,,以便加快程序的执行速度。此外,,,。这是一种非常有用的包装技巧,藉由包装来创造更多的应用机会。
为了进一步创造更多的应用机会,,。如下图所示:

图1-2
上图表示出JNI在Android里扮演的角色,以及Android框架里Java与C/C++类别融合的基本架构。上面的图1-2是一个较为抽象的图,凸显JNI与AIDL的相互呼应之角色。
于此,以高焕堂所写的第2本Android书:<<Android 软件架构设计>> 一书里的范例:HalfAdder组件为例,展示其幕后的细节架构。首先看看其JNI界面之上的细节架构,如下UML图:
图1-3 上图1-2幕后的细节架构之一
上图凸显了AIDL界面的细节架构。下图1-4将换个角度,从*.so开发者来看,当我们开发系统层级的C/C++类别时,也能善用JNI,创造C/C++类别的广大商机。其细节架构如下UML图:
 
 
图1-4 上图1-2幕后的细节架构之二

说明C/C++组件开发
从上图1-4可看到此范例的C/C++组件部份。其详细的程序代码,请阅读高焕堂所写的第2本Android书:<<Android 软件架构设计>> 一书之第5~6章。
说明AIDL接口类别之开发
基于刚才所撰写的相对应Java类别:,就能顺利配上AIDL界面了。
细说AIDL接口与IBinder接口
其实,AIDL接口幕后是仰赖着IBinder界面的。所以,我们的应用程序可以选择使用IBinder接口,也可以使用AIDL接口。如果采取IBinder接口,,其接口类别较单纯一些,如下图所示:
 
 
图1-5 仅使用较单纯的IBinder接口
由于IBinder接口只提供单一函数(即transact()函数)来进行远距沟通,呼叫起来比较不方便。例如,当Calculator类别有多个函数时,myActivity要如何呼叫它们呢? 可以呼叫IBinder接口的transact()函数,再转而呼叫Calculator的各个函数。由于它并不太方便,所以Android提供Proxy/Stub结构的AIDL接口来化解这个问题,其架构图如下:
 
 
图1-6 更方便的AIDL接口(其接口类别结构较复杂一些)
在本范例里,将采取AIDL接口,同时也介绍其幕后的IBinder接口,以及其两这之间的密切关系。
细说Stub类别的程序代码

;。:
/*---- ----*/
/*
* This file is auto-generated. DO NOT MODIFY.
* Original file:
*/
.;
import ;
import ;
import ;
import ;
import ;
import ;
public interface calInterface extends

19深刻解析Android的AIDL界面 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数 12
  • 收藏数 0 收藏
  • 顶次数 0
  • 上传人 baixue
  • 文件大小 0 KB
  • 时间2012-08-27
最近更新