android学习5:AIDL

AIDL(android interface definition language)用于进程间通信

实现步骤:

1.创建AIDL接口文件,该文件定义了客户端可用的接口及方法

2.实现对应接口

3.将接口暴露给客户程序使用


AIDL语法类似Java接口,支持的数据类型有:

1.所有基础类型

2.String、List、Map、CharSequence等

3.其他AIDL接口类型

4.所有Pracelable类型

流程:

1.创建一个 MyService.aidl文件,Android AIDL工具会生成对应的MyService.java文件,这个文件里包含了Stub

2.新建一个类继承Service,为了实现服务,让这个类中的onBind方法返回一个IBinder类的实例,这个IBinder实例代表了远程服务的实现。

此时返回实现了在AIDL中定义的方法的MyService.Stub的实例作为IBinder实例,如下:

@Override
    public IBinder onBind(Intent intent) {
        return new MyService.Stub() {
            //此处为实现AIDL接口中的方法

        };
    }

3.实现了onBind方法,就可以连接客户程序(需要注意在客户端需要存一个服务端实现了的aidl接口描述文件,但是客户端只是使用该aidl接口,

不需要实现它的Stub类)与服务了,为了建立连接,则需要实现ServiceConnection类,重写onServiceConnected和onServiceDisconnected方法

onServiceConnected(ComponentName name, IBinder Service)方法中接收一个IBinder实例作为参数,这个IBinder实例即为远程服务的一个实例,

将它cast即MYService.Stub.asInterface(service)后用来进行通信。

发布了25 篇原创文章 · 获赞 1 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章