Android——如何使用AIDL?

本文介绍了如何在Android中使用AIDL(Android Interface Definition Language)进行进程间通信。首先,阐述了AIDL支持的数据类型,包括基本数据类型和自定义接口类。接着,详细讲解了服务端的实现步骤:定义传输数据类型,创建AIDL接口,以及在服务中实现接口。最后,探讨了客户端如何实现绑定服务,调用服务端接口完成功能。
摘要由CSDN通过智能技术生成

1. AIDL支持的数据类型

  • 支持除short以外的java基本数据类型,之所以不支持short数据类型,是因为Parcel无法对short类型进行序列化,也就无法通过AIDLshort类型的数据在客户端和服务器端传输。
  • String,CharSequence
  • List,接收方必须是ArrayList
  • Map,接收方必须是HashMap
  • 其他AIDL定义的AIDL接口
  • 实现Parcelable的类

2. 服务端的实现

2.1 定义用于传输的类型

如果你想传输一个自定义的类,这个类需要继承自Parcelable,并且还需要定义一个相应的AIDL文件,用来声明已经实现了Parcelable接口的数据类型。
首先是先创建一个用来声明的AIDL文件,有了这样的声明,就可以在对应的AIDL文件中使用Goods类型:

// Goods.aidl
package com.baijimao.goodsaidlserver;

// Declare any non-default types here with import statements

parcelable Goods;

同时还要定义用于传输的实现了Parcelable接口的类Goods

package com.baijimao.goodsaidlserver;

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

/**
 * @author: baijimao
 * @date: 2019/5/11
 * Description:
 */
public class Goods implements Parcelable {
   

    private String name;

    private double price;

    public Goods(String name, double price) {
   
        this.name = name;
        this.price = price;
    }

    public String getName() {
   
        return name;
    }

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

    public double getPrice() {
   
        return price;
    }

    public void setPrice(double price) {
   
        this.price = price;
    }

    @Override
    public String toString() {
   
        return "Goods{" +
                "name='" + name + '\'' +
                ", price=" + price +
                '}';
    }

    protected Goods(Parcel in) {
   
        name = in.readString();
        price = in.readDouble();
    }

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

    public void readFromParcel(Parcel dest) {
   
        name = dest.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值