Aidl编程实践

1.新建aidl文件(右键选择新建aidl文件,默认会产生与app包同名的aidl文件夹,)在该文件中定义接口方法,rebuild项目在

app->build->generated->source->aide->debug下会产生与

app->src->main->aidl下同名的aidl文件夹及文件。

2.新建service文件,在service文件中实现aidl文件中的接口(

public class MyService extends Service{
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return binder;
    }

    IMyAidlInterface.Stub binder = new IMyAidlInterface.Stub() {
        @Override
        public int add(int x, int y) throws RemoteException {
            return x+y;
        }
    };
})

3.在mainfest文件中注册MyService,如果是同model内使用则不需要定义(<intent-filter>
    <action android:name="android.accounts.AccountAuthenticator" />
</intent-filter>

),如果远程调用则需要指定action。

4.(1)同model使用:

      首先 定义aidl接口对象(eg:iMyAidlInterface)。

      然后 定义ServiceConnection的对象,实现对应的方法,在

onServiceConnected方法中通过aidl文件的stub方法对iMyAidlInterface进行赋值。

       接着通过显式指定intent进行bindservice(bindService(intent,connection, Context.BIND_AUTO_CREATE);

       后边就可以正常使用这个服务了。

    (2)远程调用使用:

       首先 需要复制跟原app包下一模一样的文件夹及aidl文件到该model下。

       然后 rebuild文件,目的也是为了在debug文件夹下产生对应的文件夹和文件。

接着使用类似model下使用,但intent指定需要用与app下mainfest文件注册时的action相同的string,之后进行bindservice就可使用了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值