回调函数的理解,以及java例子程序

来源:互联网 发布:miss淘宝店外设 编辑:程序博客网 时间:2024/06/05 12:50

简单的说,类A中调用类B中的某个方法b,类B在执行这个方法时反过来调用类A中的方法a,对于A来说,这个a方法就叫做回调方法。

 

最近在进行Android开发的时候,遇到一个问题,网络数据需要在线程中获取,数据获取之后通过Handler更新界面,即线程接受完数据之后,Handler发送message然后对信息进行处理。类A为activity类处理界面事件,B类为Thread类负责从网络上获取数据,处理耗时的操作。类A调用B类中run()方法获取网络数据,由于传输网络数据需要一定的时间,不能马上到达,这样主线程先进行其他操作,等到数据传输完毕后,B类调用A类中Handler方法向类A发送数据,类A接收到数据后进行下一步操作。

 

下面用一个通俗的例子配合Java程序来解释:

某天,我打电话向你请教问题,当然是个难题,^_^,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了。过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理。故事到此结束。这个例子说明了“异步+回调”的编程模式。其中,你后来打手机告诉我结果便是一个“回调”过程;我的手机号码必须在以前告诉你,这便是注册回调函数;我的手机号码应该有效并且手机能够接收到你的呼叫,这是回调函数必须符合接口规范。


我向你打电话请教问题,执行You中Handler()方法

public class Me implements Callback{You you=new You();public void handler(){ you.doSomething(this);}public void callbackMethod() {System.out.println("问题处理完毕");}}


由于你解决问题需要一段时间,约定好想出办法后通知我

public class You {public void doSomething(Callback cb){System.out.println("处理问题");   cb.callbackMethod();   }}


此接口callback便是你我之间约定好的联系方式

public interface Callback {public void callbackMethod();}



public class Main {public static void main(String[] args) {new Me().handler();}}


例子引用自 http://blog.csdn.net/fengyifei11228/article/details/5729445




0 0
原创粉丝点击