近几天刚接触接口回调,一头雾水,看了这篇文章,有助理解
一,创建回调接口
public interface CSCallBack {
public void process(String status);
}
二,创建服务端(提供给客户端需求信息)
public class Server {
public void getClientMsg(CSCallBack csCallBack , String msg) {
System.out.println("服务端:服务端接收到客户端发送的消息为:" + msg);
// 模拟服务端需要对数据处理
try {
Thread.sleep(5 * 1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("服务端:数据处理成功,返回成功状态 200");
String status = "200";
// csCallBack.process(status);
}
}
在服务端里创建一个方法,将接口以参数的形式传给服务端,这一步是为了注释掉的那句话,便于进行相关处理后,将得到的数据信息通过客户端中的接口实现方法的调用将数据传送给客户端。有点比较拗口,好好理解一下。
三,创建客户端(所谓客户端可以理解为有功能需求的一方)
public class Client implements CSCallBack {
private Server server;
public Client(Server server) {
this.server = server;
}
public void sendMsg(final String msg){
System.out.println("客户端:发送的消息为:" + msg);
new Thread(new Runnable() {
@Override
public void run() {
server.getClientMsg(Client.this,msg);
}
}).start();
System.out.println("客户端:异步发送成功");
}
@Override
public void process(String status) {
System.out.println("客户端:服务端回调状态为:" + status);
}
}
在这里要实例化服务端,当我们需要通过客户端得到某些信息的时候,就调用服务端的getClientMsg()方法,并且将接口作为参数传入,
四,在服务端进行一系列操作后,得到了客户端所需结果后,通过客户端规定的途径即接口的实现方法,将所得信息返回给客户端
#class server
#注释掉的内容
csCallBack.process(status);
这就完成了接口的回调。
五。测试
public class CallBackTest {
public static void main(String[] args) {
Server server = new Server();
Client client = new Client(server);
client.sendMsg("Server,Hello~");
}
}
六,测试结果
客户端:发送的消息为:Server,Hello~
客户端:异步发送成功
服务端:服务端接收到客户端发送的消息为:Server,Hello~
(这里模拟服务端对数据处理时间,等待5秒)
服务端:数据处理成功,返回成功状态 200
客户端:服务端回调状态为:200
七,整体流程
1,客户端实现接口,自身能作为接口变量传入。
2,客户端通过调用服务端中的方法,将接口和信息传给服务端,(告诉你要对我给你的这段信息进行相关处理,处理完成后要通过这个接口中的方法告诉我你干完了,我好进行先一步操作)
3,服务器接收到信息,进行相应的处理,并在处理完成后,调用接口中的方法告诉客户端我做完了,同时将处理得到的结果返回给客户端。