最近开始学安卓,接触到了跨进程通信,这里用AIDL来实现。我的demo很简单,client发送消息给server接受,server显示收到的消息,client的消息被接受以后也得到反馈。
准备工作
首先在AS创建一个project,我起名为aidlserver,显然这是个服务端,个人习惯将默认的模块名也改成aidlserver,然后创建一个新的模块aidlclient,aidlserver和aidlclient创建都选择Empty Activity。
在服务端创建AIDL文件SendInterface
,然后实现这个接口,代码如下
// SendInterface.aidl
package com.example.aidlserver;
interface SendInterface {
String messageTrans(String string);
}
显然这是com.example.aidlserver
包下的一个接口,然后将其“整个”复制到客户端(注:包名也要一样),此时客户端的代码结构如下
如此两边的AIDL文件就准备完成了,点击Build->Rebuild Project对代码进行构建,会自动生成对应文件。
服务端
首先实现一个单例模式,后面用来存储客户端发来的字符串。
public class Singleton {
String message;
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
private static Singleton instance = new Singleton();
private Singleton(){
}
public static Singleton getInstance(){
return instance;
}
}
服务端通过service来实现aidl的功能,在java文件中新建一个服务MessageService
,代码如下
public class MessageService extends Service {