2020-09-09 AIDL

  1. AIDL 支持的数据格式
    1. 八种基本数据类型:byte、char、short、int、long、float、double、boolean
    2. String,CharSequence 实现了Parcelable接口的数据类型 List
      类型。
    3. List承载的数据必须是AIDL支持的类型,或者是其它声明的AIDL对象
    4. Map类型。Map承载的数据必须是AIDL支持的类型,或者是其它声明的AIDL对象
  2. AIDL参数TAG 有  in、out、inout 三种,基本类型默认为in,自定义类型需显示声明
    1. 当out时,需要空参数构造方法
    2. 当 out或inout 时,自定义类型需手动实现
      public void readFromParcel(Parcel desc) {
              name = desc.readString();
      }

 

实操部分

这里顺便试验一下自定义类型,所以要创建一个类,并且实现Parcelable接口.

package com.jyt.aidl;

import android.os.Parcel;
import android.os.Parcelable;

public class User implements Parcelable {
    String name;

    public User() {
    }

    public User(String name) {
        this.name = name;
    }

    protected User(Parcel in) {
        name = in.readString();
    }

    public static final Creator<User> CREATOR = new Creator<User>() {
        @Override
        public User createFromParcel(Parcel in) {
            return new User(in);
        }

        @Override
        public User[] newArray(int size) {
            return new User[size];
        }
    };

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(name);
    }

}

然后可以创建AIDL文件了

右键项目直接创建AIDL文件,路径都帮你生成好了,声明对象的类名可以随意打,因为后面要删掉.

创建2跟AIDL文件,一个是声明类型,一个是声明方法

先看声明类型的

只需要把User对象的package 复制过来  , 加上 

parcelable User;即可

再看声明方法的AIDL文件

由于用到了自定义类型,需要import一下,并且主动声明TAG,这里声明in 就不需要实现上面所说的readFromParcel

创建好AIDL文件,make project 

这里可以看到生成好的接口

反正是个DEMO,为了方便,两个应用用module区分,包名不一样

app1跟app2都应用共用都aidl文件

implementation project(path: ':aidl')

我这里app1是客户端,app2是服务端

先看服务端

定义一个service,这里引用了自动生成的UserManager.stub,实现一下接口方法

别忘了在xml添加service

服务端就这样了

接下来就是客户端,去使用这个service

刚刚生成的UserManager,就这样初始化了

直接调用方法即可

demo地址

https://github.com/helloV7/AIDLDemo.git
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值