赞
踩
网上看了一堆,感觉有点零散,我自己总结一下。
正式定义
回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
回调函数就是一个被作为参数传递的函数。在C语言中,回调函数只能使用函数指针实现,在C++、Python、ECMAScript、Java等编程语言中可以使用仿函数或匿名函数。
通俗定义
在A类中定义了一个方法,这个方法中用到了一个接口和该接口中的抽象方法,但是抽象方法没有具体的实现,需要B类去实现,B类实现该方法后,它本身不会去调用该方法,而是传递给A类,供A类去调用,这种机制就称为回调。
如下图:
更通俗解释:
小明写作业,遇到一道证明题,证明矩阵是正定的,但是小明不会啊,咋办呢?他就打了个电话给小红。
xm:这个证明题怎么做啊?
但是小红的作业中并没有这道题.
xh:你等我思考出来再告诉你。
小明听完后愉快地开机打游戏去了,约莫10分钟过去了,来电铃声突然想起,吓得小明手一抖就game over了,拿起手机一看,这不是小红嘛。
xh:这道题的解决方法我消息发给你了。
于是乎salty fish小明就这样写完了作业。
//接口帮助类
public class CallBackUtil {
//调用接口
private static CallBack cal;
public static void setCallBack(CallBack cbk){
cal=cbk;
}
public static void doCallBack(){
String info=“you have done this!”;
cal.solution(info);
}
}
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.os.Handler;
//import android.widget.Button;
//import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
CallBackUtil.setCallBack(this);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
CallBackUtil.doCallBack();
}
}, 1000);
}
@Override
public void solution(String string) {
Log.e(“Enoment”, “receive method from CallBackUtil” + string);
}
}
博客https://blog.csdn.net/u010566681/article/details/52371359
脚本之家
https://www.jb51.net/article/74194.htm
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。