AIDL通信机制简单使用步骤

Android中的通信机制有大概如下几种:序列化机制(Serializable/Parceable)/Binder/Bundle/文件共享/AIDL/Messager/ContentProvider/Socket等...这篇文章主要讲AIDL的简单实用。

AIDL是跨进程通信的一种实现方式,那么这里最少也要两个进程的角色才能够使用跨进程通信吧。那么接下将分成两个角色来说明使用步骤

服务端进程:

①:创建AIDL文件,有两种创建的方式,new/AIDL文件,或者创建接口然后吧文件的后缀改成aidl,把修饰符去掉,之后可以rebuild项目检查一下app/genreated/source/包名/debug/ 下有没有成功生成aidl的java文件。

②:在接口中自定义方法。

③:创建Service,创建AIDL接口的子类作为内部类(class Mabinder extends AIDLbigname.Stub{重写方法}),然后再onBind()方法中返回该内部类的对象。

④:最后在清单文件中,注册服务:其中注意加上export:true,action:android:name="myservice"(这里也要根据绑定的方式来选择的)

客户端进程:

①:将服务端的AIDL文件拷贝到main文件夹下。(包名要求与服务端的一致)

②:重建一下项目检查一下java文件是否构建成功

③:绑定服务,获取aidl接口实例。

intent = new Intent("myservice");
conn = new ServiceConnection() {
     @Override
      public void onServiceConnected(ComponentName name, IBinder service) {
           myaidl2 = myaidl.Stub.asInterface(service);
           Log.d("bigname_log", "onServiceConnected: " + myaidl2);
        }
     @Override
      public void onServiceDisconnected(ComponentName name) {
            }
        };
       bindService(intent, conn, BIND_AUTO_CREATE);

留意一下onServiceConnected()方法的执行时间,这貌似是在onCreated()方法执行后采取执行的,所以你在onCreated方法中去使用myaidl2的变量是他还是一个null。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值