java回调机制
2016-07-06 本文已影响103人
24K纯帅豆
讲个简单的例子,当A让B帮忙做某件事的时候,恰巧B在忙于另外一件事,这时候B对A说你先做你自己的事,等我把手头上的事做完我再找你,然后再帮你做,那B做完去找A的这个动作就可以称为回调。下面进入demo:
1、首先定义一个接口,在这我叫做MyCallBack
public interface MyCallBack {
void save(String result);
}
2、然后定义两个类A和B,分别表示A和B两个人,A类:
public class A implements MyCallBack {
private B b;
public A(B b) {
this.b = b;
}
/**
* A通过这个方法向B提问
*/
public void askQuestion(final String question) {
new Thread(new Runnable() {
@Override
public void run() {
b.executeMessage(A.this, question);
System.out.println("第二步:A去做自己的事去了,等B好了再通知A");
}
}).start();
}
@Override
public void save(String result) {
System.out.println("第五步:B通知A他做完了事,可以帮A做事情了" + result);
}
}
B类:
public class B {
/**
* 相当于B类有参数为CallBack callBack的f()---->背景三
*
* @param callBack 回调接口
* @param question A让B做的事
*/
public void executeMessage(final CallBack callBack, String question) {
System.out.println(question);
// 模拟B办自己的事情需要很长时间
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("第三步:B去做自己的事了");
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("第四步:B做完自己的事了");
/**
* B办完自己的事情之后立刻通知A他现在有空了
*/
String result = "";
/**
* 于是就告诉A,调用A中的方法 这就相当于B类反过来调用A类的方法D
*/
callBack.save(result);
}
}).start();
}
}
3、在写一个测试类,来测试这个接口:Test类
public class Test {
public static void main(String[] args) {
/**
* new 一个B
*/
B b = new B();
/**
* new 一个A
*/
A a = new A(b);
/**
* A让B帮忙做事
*/
a.askQuestion("第一步:A让B帮忙!!!!");
}
4、运行结果:
运行结果好了,最简单的回调就到这里了
公众号:Android技术经验分享