如果觉得图片显小,请放大网页,Ctrl + 滚轮
AIDL进程间通讯,创建流程如下:
1、有个服务端 AIDLService,服务端写好AIDL文件
2、有个客户端 AIDLClient,客户端将服务端写好的AIDL所在的包整体复制粘贴过来
演示的AIDL功能也很简单,只要客户端 连接 到服务端,服务端就告诉你一个名字。
一步一步开始
先有服务端,后有客户端
服务端
1、创建名为 AIDLService 的项目
2、创建AIDL
3、给AIDL命名
命名虽然可以随意,但是还是规范,默认名称是 IMyAidlInterface,我们起个名字叫 IUserAidlInterface
4、执行一下Build ---> Make Project 快捷键 Ctrl + F9
执行这一步都做了什么,我们看一下
记住这个层级,看一下标记的方法,
这时候如果我们在IUserAidlInterface.aidl内增加一个方法 getName()
这时候
然后我们 ctrl + F9 运行一下 Make Project
5、编写Service
/**
* 项目名称:AIDLService
* 类名称 :com.example.yanlong.aidlservice
* 作者 :高延荣
* 创建时间:2018/1/14
* 类描述 :
*/
public class UserService extends Service {
private final IBinder iBinder = new IUserAidlInterface.Stub() {
@Override
public void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) throws RemoteException {
}
@Override
public String getName() throws RemoteException {
return "您好,我的名字叫服务端";
}
};
@Override
public void onCreate() {
super.onCreate();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return iBinder;
}
}
iBinder 的写法是固定的,即使用 Aidl.Stub();
6、服务端的 MyService 对外开放
在清单文件中
<service android:name=".UserService">
<intent-filter>
<!-- action 的name 可以改成自己内容,比如 xxxxxxx -->
<action android:name="com.example.yanlong.aidlservice.userservice" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</service>
客户端
1、新建名为 AIDLClient 的项目
2、将AIDLService 中 的 AIDL所在的包,整体赋值粘贴到 AIDLClient 中
复制完成后Ctrl + F9 一下
3、设置点击事件,开启AIDL连接
4、封装连接成功后传递过来的IBinder
5、先运行服务端,再运行客户端,点击查看打印信息。
最后,这里简单的AIDL就完成了,下一篇总结一下线程问题。