Android AIDL 学习 (客户端)

本文介绍了如何在Android客户端项目中使用AIDL调用服务端接口。首先,创建AClient项目并导入服务端提供的AIDL接口文件和Book类定义。接着,实现绑定服务,启动服务并获取binder对象以调用接口。文章通过一个简单的连接按钮、登录验证和图书查询功能的示例,展示了AIDL的客户端调用过程。
摘要由CSDN通过智能技术生成

接上移篇 Android AIDL 学习(服务端)我们今天来看看客户端怎么实现调用。

我们还是先创建个客户端项目,AClient

开发环境:Android Studio 3.6.2

保存的地方,你根据你的习惯随便找个地方保存。

 

 要实现AIDL的调用,需要有AIDL的服务放提供为我们AIDL接口文件,还有必须的类别才行。

那我们BService服务端,需要提供给我慢AIDL接口,还有用到的Book类的定义。

还需要提供给我们调用服务的action:com.example.bservice.bookService

服务器提供的AIDL接口:IMyBookManager

// IMyBookManager.aidl
package com.example.bservice;

// Declare any non-default types here with import statements
//需要采用全部包名的引入。
import com.example.bservice.Book;

//需要说明我们引入的book 是个序列化的类。
parcelable Book;

interface IMyBookManager {
    /**
     * 默认添加的基础类型接口,不用可以删掉
     */
    void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat,
            double aDouble, String aString);

    String login(String userName, String pwd);

    Book queryByName(String bookName);
}

服务端提供Book类的定义

package com.example.bservice;

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

import androidx.annotation.NonNull;

public class Book implements Parcelable {
    private int price;
    private String name = "";

    public Book(){}

    protected Book(Parcel in) {
        price = in.readInt();
        name = in.readString();
    }

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

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

    public int getPrice() {
        return price;
    }

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

    public String getName() {
        return name;
    }

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

    @NonNull
    @Override
    public String toString() {
        return "name:" + name + ",price:" + price;
    }

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

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

我们把这两个类添加到我们的项目中

在main右键选择新建一个文件夹,命名为aidl

在didl上点击右键新建包 com.example.bservice 这个报名就是服务提供给我们AIDL文件的报名。必须要一样。

在这个包中我们添加服务端给我们的aidl 文件

 

然后把服务端的接口内容粘贴到文件中。 

处理完了接口文件,我们来处理接口文件返回来的类Book。

在src\main\java\新建包 com.example.bservice;

在新建的包上右键新建Book类。

 把服务端提供的Book类的结构保存到文件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>