如果觉得图片显小,请放大网页,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就完成了,下一篇总结一下线程问题。