Callback回调函数,这个词在日常开发中中经常会遇到。如Android开发,可以说是每天都在使用,概念网上一淘一大把,文言也好、普通话也好,不论简单复杂那些书面话并不能做到言简意赅。
打个比方:你在等一份快递,一般流程是等待东西被送到你的手上,这是return;那么问题来了,你想尽快拿到这件货物,于是需要不停的问快递公司我的东西到哪了,想想都觉得麻烦,于是就有了另一种方案——送货员每到一个站点就会给你发一条短信:我到哪了、路上出了什么问题、预计什么时候会送到,但这仅限于他想告诉你什么,如果他不想,你什么都等不到,这就是Callback回调机制。
回调函数在开发中有很多用途,典型的就是监听。
废话不多说 上干货
Callback的使用:
定义
public class using {
// Callback接口 必不可少
public interface mCallback {
void onRun(String local);
};
private mCallback call;// Callback对象 便于传递
// 接口函数
public void setCallback(mCallback callback) {
this.call = callback;
call.onRun("我的位置XXXXX");
}
}
public class use {
public static void main(String[] args) {
using using = new using();// 实例化类
// 传入回调函数
using.setCallback(new mCallback() {
public void onRun(String local) {
//我可能会收到他的短信 他的位置:local
}
});
}
}
利用Callback函数做一个简易监听
interface onUsingListener {
// error回调函数
void onError(String str);
// run回调函数
void onRun(String str);
}
private onUsingListener listener;
public void setOnUsingListener(onUsingListener ls) {
this.listener = ls;
}
//模拟触发事件
public void use(int r1, int r2) {
if (r1 > 10 && r2 > 10) {
listener.onRun("参数符合条件");
} else {
listener.onError("参数不符合条件");
}
}
public static void main(String[] args) {
Method_d1 m1 = new Method_d1();//如Android中findViewById(id);取到控件对象
m1.setOnUsingListener(new onUsingListener() {//为控件设置监听
public void onRun(String str) {
System.out.println(str);
}
public void onError(String str) {
System.out.println(str);
}
});
m1.use(5, 5);
m1.use(500, 11);
m1.use(10, 10);
m1.use(123, 0);
}