参考:http://blog.csdn.net/xiaanming/article/details/8703708
通过一个简单的小例子表述了回调过程,遂编辑一下,加深理解
所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法。
- Class A实现接口CallBack callback——背景1
- class A中包含一个class B的引用b ——背景2
- class B有一个参数为callback的方法f(CallBack callback) ——背景3
- A的对象a调用B的方法 f(CallBack callback) ——A类调用B类的某个方法 C
- 然后b就可以在f(CallBack callback)方法中调用A的方法 ——B类调用A类的某个方法D
大家都喜欢用打电话的例子,好吧,为了跟上时代,我也用这个例子好了,我这个例子采用异步加回调
有一天小王遇到一个很难的问题,问题是“1 + 1 = ?”,就打电话问小李,小李一下子也不知道,就跟小王说,等我办完手上的事情,就去想想答案,小王也不会傻傻的拿着电话去等小李的答案吧,于是小王就对小李说,我还要去逛街,你知道了答案就打我电话告诉我,于是挂了电话,自己办自己的事情,过了一个小时,小李打了小王的电话,告诉他答案是2
仔细阅读这个小例子,我们可以简单的总结一下。
1.首先要有一个接口CallBack 并且接口有一个方法solve(其实这个solvo也就是所谓的回调方法)
2.然后我们需要一个类Wang 来实现这个接口,那这个类便要实现相应的方法solve
3.Wang 在发起问题给Li 的过程中携带了Wang 作为参数传给了Li 也就是这句话(也就是wang调用了li解决问题的方法)
- /**
- * 小王调用小李中的方法,在这里注册回调接口
- * 这就相当于A类调用B的方法C
- */
- li.executeMessage(Wang.this, question);
4.Li 解决完问题之后,直接调用Wang本身的solve方法,即可把答案回调给Wang
public void executeMessage(CallBack callBack, String question){
上面那一样标红代码便是Li本身具有的解决问题的方法(即Wang调用的方法,此方法的参数 callBack就是我们传的wang类,直接调用solve方法即可完成回调)