AIDL的基本使用

本文介绍了Android Interface Definition Language (AIDL),用于跨进程通信的接口定义语言。内容包括AIDL的基本概念,支持的数据类型,如基本类型、字符串、列表、映射和Parcelable对象。还详细阐述了AIDL的使用步骤,包括创建和配置aidl文件,自定义parcelable对象,以及在接口中声明参数类型。此外,通过一个具体的服务器端和服务端示例,展示了如何创建并使用AIDL接口,强调了序列化的重要性以及避免空指针异常的注意事项。
摘要由CSDN通过智能技术生成

AIDL的基本使用

一、AIDL介绍

AIDL全程:android interface definition language,即android接口定义语言,可以理解为就是接口。

二、AIDL使用

AS专门为aidl文件配置了一个文件夹(aidl文件夹)
在这里插入图片描述

AIDL支持的数据类型:

  • 基本数据类型(int、long、char、boolean、double)
  • string和charSequence
  • list:只支持arraylist,以及里面的所有元素必须被aidl支持
  • map:只支持hashmap
  • parcelable:所有实现parcelable接口的对象
  • aidl:所有aidl接口本身也可以在aidl文件中使用

注意:自定义的parcelable对象:需要创建一个同类名的aidl文件,只有这样aidl才能识别这个对象。
在这里插入图片描述

注意:在aidl中声明其他数据类型时需要在前面加in(输入型参数)、out(输出型参数)、inout(输入输出型参数)

三、AIDL例子

  1. 创建两个项目PersonAIDLServer和PersonAIDLClient,一个作为服务端一个作为客户端。

    PersonAIDLServer项目结构图:
    在这里插入图片描述

  2. 创建一个Person工具类,定义两个属性(id、name),生成构造方法和toString方法,然后再实现Parcelable接口,重写其中的方法。

package com.example.personaidlserver;

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

public class Person implements Parcelable {
   
    int id;
    String name;

    public Person(int id, String name) {
   
        this.id = id;
        this.name = name;
    }

    protected Person(Parcel in) {
   
        id = in.readInt();
        name = in.readString();
    }

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

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

    @Override
    public String toString() {
   
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值