1. 应用场景
在处理网络请求等耗时操作时,使用接口回调,将数据返回到主线程中。
2. 回调的思想
(调用方)类A的 a() 方法调用(回调方)类B的 b() 方法;
类B的 b() 方法执行完毕后,主动调用类A的 callback() 方法,将数据返回到A中。
3. 例子:
public interface Callback{ //定义回调接口
public void tellAnswer(int Answer);
}
public class Teacher Implements Callback{ //教师类,实现回调接口;主线程
...
public void askQuestion(){
student.resolveQuestion(this);//调用学生对象的resolveQuestion()方法,this为教师类地
//址
}
@override
public void tellAnswer(int Answer){
... //实现接口的方法
}
}
public interface Student{ //定义学生接口
public void resolveQuestion(Callback callback); //教师对象被抽象成callback接口
}
public class Ricky implements Student{ //具体学生,具体的解决办法
@override
public void resolveQuestion(Callback callback){
...
callback.tellAnswer(666); //接口回调,告诉老师答案
}
}
//测试类
public class CallbackTest{
@Test
public void testCallback(){
Student student=new Ricky();
Teacher teacher=new Teacher(student);
teacher.askQuestion();
}
}