`

AIDL 进程间通信

阅读更多

AIDL

AIDL是一种接口语言。目的是为了进程间通信。server端和client端都需要统一的接口,client端才能通过这些接口访问server端,已达到进程间通信的目的。

实现主要步骤为:

1 在server端编写.aidl文件。aidl文件中定义一个接口,和接口下要实现的方法。

方法的参数和返回值可以是任意类型。只要这些类型要实现Parcelable。 

2 在eclipse中保存后会自动生成同名的java接口。此java类下面有个静态内部类Stub。

抽象类Stub继承了BInder,且要实现aidl定义的接口。

3 在server端编写一个Service。这个是server端真正工作的部分。

编写一个内部类继承Stub,也就是说这个内部类也要实现aidl的接口。是aidl接口的具体。

onBind接口需要返回这个内部类的对象。

4 在client端,拷贝.aidl文件和其路径。同样会自动生成同名的java类。

5 在client端,编写一个Activity调用接口。 

bindService绑定服务器端的Service。并传递一个ServiceConnection对象。

ServiceConnection的匿名内部类下的onServiceConnected接口可以将IBinder的对象转换成aidl同名java接口的对象。

aidl同名类的对象,就可以调用里面的接口。实现进程间通信。

 

总结:

1 aidl只是一个接口文件,ADT会自动生成同名的java接口。server端需要实现这个接口,client端需要调用这个接口。

2 Binder是实现server端和client端通信的关键。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics