- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.3 远程服务
7.3.2 服务创建与调用
下面以RemoteMathServiceDemo示例为参考,说明如何创建跨进程服务
在这个示例中,仅定义了MathService服务,可以为远程调用者提供加法服务
使用AIDL语言定义跨进程服务的接口
首先使用AIDL语言定义的MathService的服务接口,文件名为IMathService.aidl
IMathService接口仅包含一个add()方法,传入的参数是两个长型整数,返回值也是长型整数
package edu.hrbeu.RemoteMathServiceDemo;
interface IMathService {
long Add(long a, long b);
}
7.3 远程服务
7.3.2 服务创建与调用
使用AIDL语言定义跨进程服务的接口
如果使用Eclipse编辑IMathService.aidl文件,当用户保存文件后,ADT会自动在/gen目录下生成IMathService.java文件
右图是IMathService.java文件结构
7.3 远程服务
7.3.2 服务创建与调用
使用AIDL语言定义跨进程服务的接口
IMathService.java文件根据IMathService.aidl的定义,生成了一个内部静态抽象类Stub,Stub继承了Binder类,并实现ImathService接口
在Stub类中,还包含一个重要的静态类Proxy。如果认为Stub类实现进程内服务调用,那么Proxy类则是用来实现跨进程服务调用的,将Proxy作为Stub的内部类完全是出于使用方便的目的
7.3 远程服务
7.3.2 服务创建与调用
使用AIDL语言定义跨进程服务的接口
Stub类和Proxy类关系图
http://www.anzhuo.cc/forum-58-1.html 安卓HTC One X论坛
7.3 远程服务
7.3.2 服务创建与调用
IMathService.java的完整代码
package edu.hrbeu.RemoteMathServiceDemo;
import java.lang.String;
import android.os.RemoteException;
import android.os.IBinder;
import android.os.IInterface;
import android.os.Binder;
import android.os.Parcel;
public interface IMathService extends android.os.IInterface{
/** Local-side IPC implementation stub class. */
public static abstract class Stub extends android.os.Binder implements edu.hrbeu.RemoteMathServiceDemo.IMathService{
private static final java.lang.String DESCRIPTOR = edu.hrbeu.RemoteMathServiceDemo.IMathService;
/** Construct the stub at attach it to the interface. */
public Stub(){
this.attachInterface(this, DESCRIPTOR);
}
7.3 远程服务
7.3.2 服务创建与调用
16. /**
17. * Cast an IBinder object into an IMathService interface,
18. * generating a proxy if needed.
19. */
20. public static edu.hrbeu.RemoteMathServiceDemo.IMathService asInterface(android.os.IBinder obj){
21. if ((obj==null)) {
22. return null;
23. }
24. android.os.IInterface iin = (android.os.IInterface) obj.queryLocalInterface(DESCRIPTOR);
25. if (((iin!=null)(iin instanceof edu.hrbeu.RemoteMathServiceDemo.IMathService))) {
26.
您可能关注的文档
- 学案33 导数的应用(1).ppt
- 安卓android框架与应用开发介绍(10).ppt
- 安卓android框架与应用开发介绍(7).ppt
- 安卓手机应用市场调查介绍.doc
- 安卓系统Android应用程序开发PPT教材_第10章AndroidNDK开发(5).ppt
- 安卓系统Android应用程序开发PPT教材_第7章后台服务(12).ppt
- 安卓系统Android应用程序开发PPT教材_第7章后台服务(20).ppt
- 安卓系统Android应用程序开发PPT教材_第7章后台服务(21).ppt
- 安卓系统Android应用程序开发PPT教材_第7章后台服务(22).ppt
- 安卓系统Android应用程序开发PPT教材_第7章后台服务(23).ppt
- 2023-2024学年广东省深圳市龙岗区高二(上)期末物理试卷(含答案).pdf
- 2023-2024学年贵州省贵阳市普通中学高一(下)期末物理试卷(含答案).pdf
- 21.《大自然的声音》课件(共45张PPT).pptx
- 2023年江西省吉安市吉安县小升初数学试卷(含答案).pdf
- 2024-2025学年广东省清远市九校联考高一(上)期中物理试卷(含答案).pdf
- 广东省珠海市六校联考2024-2025学年高二上学期11月期中考试语文试题.pdf
- 2024-2025学年语文六年级上册第4单元-单元素养测试(含答案).pdf
- 2024-2025学年重庆八中高三(上)月考物理试卷(10月份)(含答案).pdf
- 安徽省安庆市潜山市北片学校联考2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 贵州省部分校2024-2025学年九年级上学期期中联考数学试题(含答案).pdf
文档评论(0)