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端通信的关键。