AIDL(android 接口定义语言)

概述

Android interface define language,android接口定义语言;用于生成可以在Android设备上两个进程之间进程通信(IPC,interprocess communication)的代码。

使用步骤

A程序

  • 1、在某个包下创建A.aidl文件;(ADT会在gen目录自动生成A.java文件)


    1.png
  • 2、在A.aidl文件下定义自己需要的接口
  • 3、创建一个myService类继承Service类,在这个类中创建一个内部类去实现aidl中的接口,并在onBind()方法中返回此类对象。注意:创建类是A.Stub类
 public class AIDLService extends Service {
    @Override
    public void onCreate() {
        super.onCreate();
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return new IServiceAIDL.Stub(){
            @Override
            public int getPrice() throws RemoteException {
                return 0;
            }

            @Override
            public String getName(String str) throws RemoteException {
                return null;
            }
        };
    }
}
  • 4、主菜单配置service组件
<!--注册服务--> 
<service android:name=".MyService"> 
<intent-filter> 
<!--指定调用AIDL服务的ID--> 
<action android:name="net.blogjava.mobile.aidlservice.MyADIL"/> 
</intent-filter> 
</service>
  • 5、客户端需要创建ServiceConnection类,重写onServiceConnection()方法,在此方法中接受IBinder。(如果客户端调用的不是同一个应用,需要将AIDL文件带包拷贝到应程序文件目录中)
  IServiceAIDL remoteAIDL;
    private ServiceConnection serviceConnection = new ServiceConnection() {
        @Override
        public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
            remoteAIDL = IServiceAIDL.Stub.asInterface(iBinder);
        }

        @Override
        public void onServiceDisconnected(ComponentName componentName) {

        }
    };
参考地址

Android 接口定义语言 (AIDL)
AIDL的使用情况和实例介绍

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容