在学习 AIDL的过程中看不过不少的书籍,在网上也找了不少的资料,总算能够实现AIDL的调用,在这里把自己的理解与实现写出来方便一后备忘查找。
主要是自己的底子太差,别人都写的太高大尚很多看不明白。用自己看明白的方式记录下。
话不多说回归正题。
AIDL是什么
AIDL是一个缩写,全称是Android Interface Definition Language,也就是Android接口定义语言。
它就是可以定义一个接口,提供给其他的app调用。
为什么会需要AIDL语音接口
每一个app的运行在虚拟机中都有自己独立的进程,虚拟机为每个app进行划分独立的内存运行空间,app就在这个空间里运行无法越界。
那有自己的独立空间是挺好,程序运行起来互相不影响,但有些时候自己想要获取的数据,自己没法完成只有别的app才能够提供,但自己由跑不出去虚拟机给划分的空间,那怎么办?这时AIDL就来了,app之间只要根据统一的规则,双双规定好接口就能够通过AIDL进行传输数据。
A (客户端)说想从B (服务器端)进行登录的验证,B服务端返回成功还是失败,能够从B端获取一个对象。
我们就以这个小需求为列,看看AIDL需要怎么实现。
首先我们来看服务端,服务端提供服务,那我就是老大,一切规则由我定,你们都是小弟必须按照我的规则来。
我们来看看服务端如何实现。
环境:android stuido 3.6.2
新建一个项目BService
在app上点击右键->新建->AIDL->AIDL文件
给我们新建的aidl文件起个名字IMyBookManager。
创建一个Book.java的类,Book的类必须与IMyBookManager的是同一个命名空间。
package com.example.bservice;
public class Book {
private int price;
private String name = "";
public int getPrice() {
return price;
}
public