`
夏文权
  • 浏览: 237155 次
  • 性别: Icon_minigender_1
  • 来自: 贵州
社区版块
存档分类
最新评论

android 使用AIDL和远程服务实现进程通信的学习

 
阅读更多
写道
有源码可以下载,在附近后面。
 
写道
下载源码后,导入eclipse,首先运行testAIDLZ这个工程,不要退出,按home键,然后再运行testAIDLClient这个工程。
点击下载图片按钮,就是调用testDIDL这个工程下的download方法执行下载图片,图片保存在testDIAL这个工程的SDCard里面,如果没有SDCard的话那就没有进行下载任务。
 
写道
在Android中, 每个应用程序都有自己的进程,当需要在不同的进程之间传递对象时,该如何实现呢? 显然, Java中是不支持跨进程内存共享的。因此要传递对象, 需要把对象解析成操作系统能够理解的数据格式, 以达到跨界对象访问的目的。在JavaEE中,采用RMI通过序列化传递对象。在Android中, 则采用AIDL(Android Interface Definition Language:接口定义语言)方式实现。

AIDL是一种接口定义语言,用于约束两个进程间的通讯规则,供编译器生成代码,实现Android设备上的两个进程间通信(IPC)。进程之间的通信信息,首先会被转换成AIDL协议消息,然后发送给对方,对方收到AIDL协议消息后再转换成相应的对象。由于进程之间的通信信息需要双向转换,所以android采用代理类在背后实现了信息的双向转换,代理类由android编译器生成。

 

写道
编写Aidl文件时,需要注意下面几点:
1.接口名和aidl文件名相同。
2.接口和方法前不用加访问权限修饰符public,private,protected等,也不能用final,static。
3.Aidl默认支持的类型包话java基本类型(int、long、boolean等)和(String、List、Map、CharSequence),使用这些类型时不需要import声明。对于List和Map中的元素类型必须是Aidl支持的类型。如果使用自定义类型作为参数或返回值,自定义类型必须实现Parcelable接口。
4.自定义类型和AIDL生成的其它接口类型在aidl描述文件中,应该显式import,即便在该类和定义的包在同一个包中。
5.在aidl文件中所有非Java基本类型参数必须加上in、out、inout标记,以指明参数是输入参数、输出参数还是输入输出参数。
6.Java原始类型默认的标记为in,不能为其它标记。
  • 大小: 86.8 KB
分享到:
评论

相关推荐

    Android aidl远程服务代码

    Android 远程服务 aidl service代码demo,适合想要理解远程服务,跨进程通信

    Android AIDL 跨进程通信

    Android AIDL 远程服务实现跨进程通信,详解请参考:https://blog.csdn.net/Ikulm/article/details/131169568

    Android中如何利用AIDL机制调用远程服务

    在Android中,每个应用程序都有自己的进程,...AIDL是一种接口定义语言,用于约束两个进程间的通讯规则,供编译器生成代码,实现Android设备上的两个进程间通信(IPC)。AIDL的IPC机制和EJB所采用的CORBA很类似,进程之间

    Android Service的跨进程通信实战&Service/AIDL远程调用过程解析(Android Q)

    Service的跨进程通信实战 设想这么一个场景,我们有2个APP(或者2个进程,均可),...PersonServer端是服务的提供者,我们首先需要创建一个Service来提供该服务,并且需要该服务具备跨进程通信的能力,以便Client端进行

    android杀不死的app

    杀不死服务实现原理: 1:Android一个app可以启动2个进程 ...5:注意配置远程服务启动为一个新的进程,为新进程命名为 android:process=".remoteService" 6:进程A服务绑定进程B服务,进程B服务绑定进程A服务

    实例讲解Android中的AIDL内部进程通信接口使用

    首先描述下我们想要实现的内容,我们希望在一个应用中通过点击按钮,去操作另一个进程中应用的音乐播放功能。 如图,我们点击“播放”时,系统就会去远程调用我们提供的一个service(与当前service不是同一个应用...

    Android 进程间通信实现原理分析

    Android Service是分为两种: 本地服务(Local Service): 同一个apk内被调用 远程服务(Remote Service):被另一个apk调用远程服务需要借助AIDL来完成。 AIDL 是什么 AIDL (Android Interface Definition ...

    SimpleAIDL:用于远程服务和AIDL的简单Android应用演示

    简单AIDL 具有AIDL进程间通信的Android远程服务的简单示例本示例不处理配置更改。

    精通ANDROID 3(中文版)1/2

    第11章 构建和使用服务  11.1 使用HTTP服务  11.1.1 将HttpClient用于HTTPGET请求  11.1.2 将HttpClient用于HTTPPOST请求(多部分POST请求示例)  11.1.3 SOAP、JSON和XML分析程序  11.1.4 处理异常  ...

    Android应用源码安卓源码(172个合集).zip

    Android应用源码安卓源码(172个合集),可以做为你的学习参考。 365MobileSecretary v1.0.6(365手机助手AIDL) 888个经典 Logo.rar AdXmpp(Openfire+asmack+spark) .zip AidlDemo(简单aidl的例子) aidl跨进程调用....

    Android开发案例驱动教程 配套代码

    《Android开发案例驱动教程》 配套代码。 注: 由于第12,13,14章代码太大,无法上传到一个包中。 这三节代码会放到其他压缩包中。 作者:关东升,赵志荣 Java或C++程序员转变成为Android程序员 采用案例驱动模式...

    精通Android 3 (中文版)2/2

    第11章 构建和使用服务  11.1 使用HTTP服务  11.1.1 将HttpClient用于HTTPGET请求  11.1.2 将HttpClient用于HTTPPOST请求(多部分POST请求示例)  11.1.3 SOAP、JSON和XML分析程序  11.1.4 处理异常  ...

    android的服务

    Android提供了一个 AIDL (Android接口定义语言)工具 来处理序列化和通信。这种情况下Service需要以aidl文件的方式提供服务接口,AIDL工具将生成一个相应的java接口,并且在生成的服务接口中包含一个功能调用的stub...

    Android 代码分析

    3 Android JAVA AIDL Analysis 15 4 Android JAVA Binder IPC System 20 5 Android Media Scanner Process 27 5.1 JAVA layer initialize 27 5.2 JAVA layer prescan 28 5.3 C++ layer processDirectory 28 5.4 JAVA...

Global site tag (gtag.js) - Google Analytics