哪个类实现了回调监听接口
中的方法,就回去调用哪个类中的对应的方法。
主函数中调用HttpUtils
的get
方法,第二个参数传入View
的实例,那么当get
方法内部执行到listener
调用方法的地方的时候,就会去回调View
中的方法。
这就是回调方法
例子:
//回调接口
public interface Listener {
void onSucceed(String info);
void onFailed(String info);
}
//模仿网络访问类
public class HttpUtils {
//参数是url和对应的监听器
public void get(String url, Listener listener){
//开启延时的一个线程模拟网络访问
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
//对网络访问结果进行判断并接着调用相应的监听器的方法
if (url==null){
listener.onFailed("error");
}else {
listener.onSucceed("anyInfo");
}
}
}).start();
}
}
//实现了监听器的类,那么如果调用HttpUtils中的get()方
//法,并且将View的实例作为监听器传入时,当网络访问得
//到结果时,就会回头调用View类中的如下两个方法。
public class View implements Listener{
@Override
public void onSucceed(String info) {
System.out.print(info);
}
@Override
public void onFailed(String info) {
System.out.print(info);
}
}
入口main函数
public class Main {
public static void main(String[] args) throws Exception {
View view = new View();
new HttpUtils().get("anyUrl", view);
}
}
点击run : 延时一秒后打印:anyInfo