AIDL在Android开发中用于进程间的通讯,举个例子,你有个程序A中用“张三”这个用户名正在登录,当你打开另一个程序B,想让“张三”这个用户自动登录,那你就需要获取程序A中“张三”用户名和密码。怎么做呢?这便用到了AIDL技术。
下面我们通过一个实例来实现上述应用场景,假设程序A我命名为AIDLServer,作为服务端;程序B我命名为AIDLClient,作为客户端。我们先来编写服务端:
第一步建立aidl文件,基础数据类型都可以;List、Map也可以,但其里面的内容也必须是java基础数据类型。
IAIDLServer.aidl:
package com.demo.aidlserver;
import com.demo.aidlserver.User;
interface IAIDLServer{
String sayHello();
User getUser();
}
如使用Object类型,需要该对象implement Parcelable接口,并且需要导入该接口包名+类名,且建立对象名.aidl文件声明该对象。
User.java:
package com.demo.aidlserver;
import android.os.Parcel;
import android.os.Parcelable;
public class User implements Parcelable {
private String userName;
private String userPwd;
private int age;
public User(){}
public User(Parcel parcel){
userName = parcel.readString();
userPwd = parcel.readString();
age = parcel.readInt();
}
public String getUserName() {
return userName;
}
public void