aidl学习

aidl学习

跨进程如何传递数据

  • 两个进程无法直接通信
  • 通过android系统底层间接通信

AIDL:android interface definition language

android接口定义语言
慕课网视频学习地址

默认支持数据类型

  • 基本数据类型
  • String,CharSequence
  • List,Map
  • Parcelable

步骤

如需使用 AIDL 创建绑定服务,请执行以下步骤:

  • 创建 .aidl 文件
    此文件定义带有方法签名的编程接口。

package com.example.android;
interface IRemoteService {

int getPid();

void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
        double aDouble, String aString);

}
```

  • 实现接口
    Android SDK 工具基于您的 .aidl 文件,使用 Java 编程语言生成一个接口。此接口具有一个名为 Stub 的内部抽象类,用于扩展 Binder 类并实现 AIDL 接口中的方法。您必须扩展 Stub 类并实现方法。

    private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {
    public int getPid(){
        return Process.myPid();
    }
    public void basicTypes(int anInt, long aLong, boolean aBoolean,
        float aFloat, double aDouble, String aString) {
        // Does nothing
    }
    

};
```

  • 向客户端公开该接口
    实现 Service 并重写 onBind() 以返回 Stub 类的实现。

        public class RemoteService extends Service {
    @Override
    public void onCreate() {
        super.onCreate();
    }
    
    @Override
    public IBinder onBind(Intent intent) {
        // Return the interface
        return mBinder;
    }
    
    private final IRemoteService.Stub mBinder = new IRemoteService.Stub() {
        public int getPid(){
            return Process.myPid();
        }
        public void basicTypes(int anInt, long aLong, boolean aBoolean,
            float aFloat, double aDouble, String aString) {
            // Does nothing
        }
    };
    

}
```

调用步骤

调用 IPC 方法
调用类必须执行以下步骤,才能调用使用 AIDL 定义的远程接口:

  • 在项目 src/ 目录中加入 .aidl 文件。
  • 声明一个 IBinder 接口实例(基于 AIDL 生成)。
  • 实现 ServiceConnection。
  • 调用 Context.bindService(),以传入您的 ServiceConnection 实现。
  • 在您的 onServiceConnected() 实现中,您将收到一个 IBinder 实例(名为 service)。调用 YourInterfaceName.Stub.asInterface((IBinder)service),以将返回的参数转换为 YourInterface 类型。
  • 调用您在接口上定义的方法。您应该始终捕获 DeadObjectException 异常,它们是在连接中断时引发的;这将是远程方法引发的唯一异常。
  • 如需断开连接,请使用您的接口实例调用 Context.unbindService()。

步骤未官网上介绍步骤具体跳转官网

你可能感兴趣的:(aidl学习)