您的位置:首页 > 大数据 > 人工智能

AIDL 写法

2015-11-25 18:47 519 查看
A应用——提供服务

1. 新建New —File ——.aidl文件

2. aidl文件中定义interface,,在gen文件夹下能看到相应的java类

3. 定义Service 自定义binder类 extends aidl.Stub 实现接口方法

实现onBind()方法,返回binder

4. manifest中注册Service(隐式启动)

B应用——调用服务

相同包名 aidl文件

定义ServiceConnection implements ServiceConnection,实现onServiceConnected方法(系统调用这个来传送在service的onBind()中返回的IBinder)

private IBook bookQuery;

private final class BookConnection implements ServiceConnection{

@Override

public void onServiceConnected(ComponentName name, IBinder service) {

// TODO Auto-generated method stub

bookQuery = IBook.Stub.asInterface(service);

}

@Override

public void onServiceDisconnected(ComponentName name) {

// TODO Auto-generated method stub

}

}

绑定service

bindService(service, ServiceConnection , BIND_AUTO_CREATE);

使用bookQuery 的方法

在进行两个project通信时,应该有以下几点注意:

1.在activity project中引入service project中aidl文件。注意引入后的aidl文件包名应该和service中aidl文件包名保持一致。

2.service project中manifest文件中,service 注册时要声明 android:process=”:remote”

action应该是aidl中接口的包名.接口名。

3.activity bindService中一个serviceconnection对象对应的是一个service,否则会报java.lang.SecurityException: Binder invocation to an incorrect interface异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: