AIDL 写法

A应用——提供服务
1. 新建New —File ——.aidl文件
2. aidl文件中定义interface,,在gen文件夹下能看到相应的java类
3. 定义Service 自定义binder类 extends aidl.Stub 实现接口方法
实现onBind()方法,返回binder
4. manifest中注册Service(隐式启动)

B应用——调用服务

  1. 相同包名 aidl文件
  2. 定义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
    }
    }

  3. 绑定service
    bindService(service, ServiceConnection , BIND_AUTO_CREATE);
  4. 使用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异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值