在AIDL——Android接口定义语言初步探索中实现了客户端主动调用服务端的方法获取数据,如果服务端的方法是异步执行的,等待结果出来后再通知客户端或者需要服务端主动给客户端传递信息,这个时候就需要使用接口回调了。
这里只实现服务器端主动把数据传递给所有连接的客户端,需求就是当服务端数据增加时,把最新的数据通过接口回调传递给客户端。异步执行需要的接口回调类似。
在AIDL——Android接口定义语言初步探索代码基础上修改,不明白的可以先看看这篇
- 定义接口文件
在aidl目录的包中新建一个aidl文件,声明一个方法
// IMyAidlInterface.aidl
package com.aidl.server;
// Declare any non-default types here with import statements
import com.aidl.server.InfoBean;//引入定义的aidl文件,使用序列化对象,
interface IMyAidlInterface {
void onCallbackAllInfo(in List<InfoBean> books);
}
- 添加注册和注销监听的方法
在InfoManager.aidl文件中添加两个方法:
void registerListener(IMyAidlInterface listener);//注册监听
void unregisterListener(IMyAidlInterface listener);//销毁监听
- 在服务端实现注册和销毁监听的方法,并实现需求
定义一个对象管理所有客户端注册的监听对象
private