1、AIDL创建流程及简单Demo

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


猜你喜欢

转载自blog.csdn.net/qq_26030147/article/details/79056719