Java以及Android回调机制的一些理解

时间:2021-09-12 18:53:43

           安卓的View如Button,ImageView都有事件监听,而事件监听就是一个回调函数。回调函数在实际的应用中也是十分的重要。网上也讲过很多回调函数的,我也只是写一写自己的感悟,以及对回调函数的理解。

       首先谈谈什么是回调函数,引用一段话:在Android的学习过程中经常会听到或者见到“回调”这个词,那么什么是回调呢?所谓的回调函数就是:在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,这种机制就称为回调。

     为什么要使用回调函数呢,回调函数就是在一个不确定实现的方法用interface或者它的抽象方法留个口子,留给具体调用者(调用前边那个不确定的方法)在调用时提供具体实现来补上那个口子。这这就做到了随时使用,随时实现。此外,Android的监听事件由于不知道具体的实现方法,于是采用回调就是一个很好的方式了,你自己定义点击后的事件监听,想要实现什么功能就可以实现什么功能。

   下面用具体的代码加以说明:

该类相当于是




<span style="font-size:18px;">public class CallbackDemo {


private String A="123";

public int getA(CallBack callBack){
//此时调用的是类B的实现的方法;
System.out.println("time3"+111);
int b=callBack.getResult(A);//A作为形参
System.out.println("time1"+333);
//b应该为24;
return b+4;
}

//定义一个接口,相当于一个约定
//或者说这是一个抽象方法,当你想要实现此方法时,可以具体实现。
public interface CallBack{
public int getResult(String result);
}
}</span>



<span style="font-size:18px;">public class GetA {

private static CallbackDemo cDemo=new CallbackDemo();
public static void main(String[] args) {

//调用A类的方法,然后A类遇到那个抽象方法时又回调该实现
int c=cDemo.getA(new CallBack() {

public int getResult(String result) {
//实现要做什么
//result就是A的值
System.out.println("time2"+222);
int i=Integer.parseInt(result);
System.out.println(i);
return i;}
});
System.out.println(""+c);
}
}</span>

首先会调用第一个类的getA()方法,之后遇到抽象方法,会寻找该抽象方法的具体实现,于是就调用第二个类的实现方法getResult(),在之后就是调用getA()后面的未执行完的语句


输出如下所示:

Java以及Android回调机制的一些理解

参考文章:

        详细介绍Android中回调函数机制

        Android开发中Java回调机制的应用

        弄明白Android 接口回调机制

        Java/Android中的函数调用&回调函数&自定义回调函数