AIDL:实现进程之间的通信
https://blog.csdn.net/iispring/article/details/51815475
AIDL中定义的方法可以接受如下的参数类型作为形参:
所有的基本类型,例如int, long, char, boolean等等
String、CharSequence、List、Map
接口:是一个抽象的方法,里面定义了一些方法,但是具体的方法实现在其他的类中,但是实现了接口的类必须实现接口中的所有方法
如果要使用自定义类,需要对参数进行序列化
如果参数为Android标准的类怎么处理,直接import,但是Android的标准类必须是实现了序列化(Parcelable)如下:
import android.net.wifi.WifiConfiguration;
int addNetWork(in WifiConfiguration cfg);
AIDL文件通过编译器打包成进程间可以通信的代码(对应的java文件)
具体流程:
app应用中需要调用service应用中的方法
1.service应用新建AIDL文件,其实就是定义接口,并定义接口中的一些方法,这些方法就是允许客户端跨进程调用的方法
// IMyAidlInterface.aidl
package com.example.service;
interface IMyAidlInterface {
String getString();
}
2.编译步骤1定义的AIDL,Android Studio会自动编译成一个JAVA文件
3.定义一个Service类,实现一些具体接口,并需要在AndroidMainfest中进行声明
4.将步骤1中AIDL文件复制到app应用中,并注意文件名必须一致
5.最后在app应用中bindService绑定步骤3中的Service