回调机制:把一个方法作为形参传递到另一个方法中就叫做回调。
安卓中的接口回调就是,先定义一个接口,我实现了一个接口里的方法doSomething,然后注册到你这里,然后我就去做别的事情去了,你在某个触发的时机回头来调用我doSomething的方法。
用生活中的例子解释:有一天我遇到一个很难的问题,问题是“1 + 1 = ?”,就打电话问你,你说你要去查查数学书才能告诉我答案,我对你说,我先做其他数学题,你知道了答案就打我电话告诉我,于是我挂了电话,继续办自己的事情,过了一个小时,你在数学书中查到了答案,于是你打电话告诉我答案是2。
在接口中定义finish()方法,然后将接口定义到你这个类中,在你类中去查询数学书,查询完结果后调用接口中的finish()方法告诉我你找到了答案。我类中实现finish()方法的具体内容,并执行。
在我们现实生活中,有如下这样场景:有一位老板很忙,他没有时间盯着员工干活,然后他告诉自己的雇员,干完当前这些事情后,告诉他干活的结果。
首先创建一个回调接口,让老板得告知干完活如何找到他的方式:留下老板办公室地址:
[java]
view plain
copy
- package net.easyway.test;
- /**
- * 此接口为联系的方式,不论是电话号码还是联系地址,作为
- * 老板都必须要实现此接口
- * @author Administrator
- *
- */
- public interface CallBackInterface {
- public void execute();
- }
创建回调对象,就是老板本人,因为员工干完活后要给他打电话,因此老板必须实现回调接口,不然员工去哪里找老板?
[java]
view plain
copy
- package net.easyway.test;
- /**
- * 老板是作为上层应用身份出现的,下层应用(员工)是不知道
- * 有哪些方法,因此他想被下层应用(员工)调用必须实现此接口
- * @author Administrator
- *
- */
- public class Boss implements CallBackInterface {
- @Override
- public void execute() {
- System.out.println("收到了!!" + System.currentTimeMillis());
- }
- }
创建控制类,也就是员工对象,他必须持有老板的地址(回调接口),即使老板换了一茬又一茬,办公室不变,总能找到对应的老板。
[java]
view plain
copy
- package net.easyway.test;
- /**
- * 员工类,必须要记住,这是一个底层类,底层是不了解上层服务的
- * @author Administrator
- *
- */
- public class Employee {
- private CallBackInterface callBack = null;
- //告诉老板的联系方式,也就是注册
- public void setCallBack(CallBackInterface callBack){
- this.callBack = callBack;
- }
- //工人干活
- public void doSome(){
- //1.开始干活了
- for(int i=0;i<10;i++){
- System.out.println("第【" + i + "】事情干完了!");
- }
- //2.告诉老板干完了
- callBack.execute();
- }
- }