您的位置:首页 > 移动开发 > Android开发

回调函数详解

2017-03-01 18:13 197 查看
回调函数这个名字取十分形象,回调,回过头再调,处理完在调用

下面以几个例子:

第一层抽象,

(1). A类有个B类的对象(可以对B类进行调用)

(2). B类有个计算 今天温度的方法C(object)

(3). A有个打印字符串的方法 D(String dataStr)

(4). 此时 A类调用B类C(object)方法,object传入A.this(A类的对象),计算是需要时间的,虽然很快,B类计算完了会通过传入的A勒对象调用A类的D(String dataStr)进行打印

这个例子中,B对A进行了回调,回调方法就是D(String dataStr)

其中A.this传给C()方法时,A.this可以理解为回调地址(为回调打基础),回调地址可以没有

还不明白?看下面第二层抽象

(1)胖虎没有温度计,但是他想直到今天的温度,同时他知道大熊有温度计

(2)胖虎去找大熊,问他今天多少度,大熊去拿温度计测量温度

(3)胖虎有急事给大熊说,测好了来我家找我

(4)大熊测好了,告诉胖虎今天20度

这个例子中,大熊最后去告诉胖虎今天20度,这就是大熊对胖虎的回调

胖虎说的来我家找我可以理解为回调地址(为回调打基础),可以没有

很好理解吧还不明白,就@我吧。( ▼-▼ )

ok,趁热打铁,看段Java代码:

胖虎类:

package 回调测试;
/**
* 胖虎
*/
public class PangHu {

public PangHu() {
// TODO Auto-generated constructor stub
}

//大熊想知道今天多少度
private void C(){
DaXiong daXiong = new DaXiong();
daXiong.getTemperature(this);
}

//打印函数
public void out(String str){
System.out.println(str);
}
}


大熊类

package 回调测试;

/**
*  大熊
*/
public class DaXiong {

//获取今天温度的方法
public void getTemperature(Object object){
String temperature = "20度";

PangHu daXiong = (PangHu) object;
//回调胖虎
daXiong.out(temperature);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息