`

AIDL简单入门

 
阅读更多

转载http://www.iteye.com/topic/655866

 

最近即将做的一个项目里面需要使用到AIDL(Android Interface Definition Language:接口描述语言)技术,自己早前只是简单瞄了一眼,我的理解它和java中的RMI的概念差不多,在这里我就不相信讲解什么事AIDL了,网上这种介绍非常多。不过概念毕竟是书本上的东西,我决定亲自测试一下。废话不说了,直接开始
1、 既然AIDL是既然是可以在不同进程间进行操作,那么我们首先就需要准备两个项目,我们先来看看不同的两个项目结构式什么样子的。如图:



我们先暂且定义一个项目为“服务器端项目”,一个为“客户端项目”,其中紫色线框里面的东西是第一个需要注意的地方,就是不管你两个项目包名有多大差异,但是aidl文件必须放置在同一个包下面,而且名字也要相同,不然找不到ITestService
2、 我们现在创建好了项目,下一步就是开发调用接口和实现方法了。其实aidl文件在这里就充当的是一个interface类,你可以在它里面写上你要公布给客户端的调用接口。(具体代码我就不写了,大家可以看我上传的项目)在写aidl接口时,需要注意的是:类命必须和你的aidl文件名相同;必须指明当前包路径;如果是常用类型,如:String、List、int、void之类的,就不需要导入所在包路径了,当使用了外部类时,就需要导入这个类所在的包路径了;书写方法时,每个参数必须指定in或out来表明它是输入参数还是输出参数。
3、 既然aidl我们写完了,那么接下来当然是要去实现这个接口,让它来帮我们做事情了, Aidl因为是远程调用,所以这里你的实现类必须是一个继承Service的类,然后在这个实现类中再去做aidl的实现方法。上图中TestService就是我的实现类,具体代码也请看我上传的项目。不过在TestService需要注意的就是,onBind方法一定要返回你实现的aidl实例对象,供远程调用方使用
public IBinder onBind(Intent intent) {
return binder;
}
4、 服务端manifest.xml中需要进行如下配置,不然你客户端调用会无法获得你的aidl对象的,我之前做测试的时候,一直被这个问题困扰。
<service android:name="TestService" android:process=":remote"//供客户端远程调用
    <intent-filter>配置你的AIDL接口完整路径
    <action android:name="com.lifeblood.ITestService" />
    </intent-filter>
</service>
5、 做完了服务器的工作后,我们再开始做客户端的工作。客户端其实就很简单了,把服务器的aidl拷贝过来,创建一个ServiceConnection用来得到远程onBind中传递过来的aidl接口对象,然后在启动的时候进行一次绑定bindService就可以开始使用aidl中的方法了。

如果各位以后需要使用到aidl,那么只要注意以上说的,我想就不会出现什么大问题了,至少我就是这样走过来的。希望上面的介绍能对各位有帮助,如果中间有错误的地方,也请各位指正,大家共同学习。

分享到:
评论

相关推荐

    安卓跨进程通信之AIDL使用入门

    安卓跨进程通信之AIDL使用入门,对应讲解博客:http://blog.csdn.net/smarticeberg/article/details/50972211

    aidl入门测试

    aidl 入门的简单测试案例,包括server和client两部分,比较简单。

    AIDL简单使用示例代码

    AIDL简单使用示例代码,关于如何使用AIDL https://blog.csdn.net/u013293125/article/details/77368261

    Android AIDL入门测试案例

    AIDL(Android接口定义语言),目的是为了实现进程间通信,尤其是在涉及多进程并发情况下的进程间通信。 博客地址:http://blog.csdn.net/chenzheng8975/article/details/54140098

    Android AIDL 简易demo

    Android-AIDL,demo,代码简洁易懂,希望对大家有帮助,博客地址https://blog.csdn.net/u010775335/article/details/105541176

    AIDL简单实例下载

    AIDL简单实例下载,有两个项目分别是客户端和服务端。也有在同个项目里面的两个module

    AIDL简单使用Demo

    关于AIDL简单使用Demo,主要是简单的使用流程,通俗易懂。

    AIDL简单的示例代码

    AIDL简单的示例代码,主要是关于AIDL如何使用。https://blog.csdn.net/u013293125/article/details/77368261

    AndroidStudio使用AIDL简单完成IPC

    AndroidStudio使用AIDL简单完成IPC,适合对Binder和AIDL不熟练的初学者学习机制

    aidl简单示例

    aidl简单示例源码,对应博客地址:http://blog.csdn.net/chengjun77/article/details/50119913

    aidl简单实例

    一个aidl的简单实例源码,具体使用参见

    AIDL最简单的使用步骤

    AIDL:Android Interface Definition Language,即Android接口定义语言。 为了使其他的应用程序也可以访问本应用程序提供的服务,Android系统采用了远程过程调用(Remote Procedure Call,RPC)方式来实现。与很多其他...

    Aidl下的Binder简单例子

    Aidl下的binder简单设计例子,通过aidl的设计及调用来理解binder机制。

    AIDL的简单例子

    AIDL的简单例子,一看就懂!

    android aidl demo

    aidldemo android aidl demo 入门 简介。Android 中AIDL的使用与理解 (一)

    ITelephony.aidl和NeighboringCellInfo.aidl

    ITelephony.aidl和NeighboringCellInfo.aidl

    AidlDemo(简单aidl的例子.zip

    简单的Android学习源代码 aidl的使用方法 Android 入门学习的资历

    安卓AIDL简单应用

    安卓简单的aidl调用,实现俩个进程之间的数值传递,运行时,先运行service,再运行client,最后在client程序的日志中可看到由service中传递过来的值!

    简单的AIDLdemo

    一个简单的AIDL demo 里面只有activity.java和service.java两个文件,因为很多的实验都写在了一个工程中,所以只能拿出这两个文件,你需要自建工程,并在清单文件中声明(service 必须有android:process=":remote",...

    AIDL例子源码AIDL例子源码

    AIDL例子源码AIDL例子源码AIDL例子源码

Global site tag (gtag.js) - Google Analytics