快速业务通道

AsyncToken模式,替换通常的Listener模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-22

AsyncToken模式,替换通常的Listener模式

时间:2011-01-01 javaeye badqiu

对于一个异步的方法调用,我们需要异步的得到调用结果,通常我们会使用Listener模式,用于监听方法异步调用的结果.

但应用该方法在实际使用中其实并不灵活.

1.因为由于Service的方法很多,可能会导致Listener要监听的事件过多.

2.一般Listenner都是事先设置好监听器,不能在方法调用的过程中灵活的增加新的监听器

3.对如发送消息失败再次发送消息这种需求处理会比较别扭.

以下为应用AsyncToken的使用示例:

Java代码

public void testSendEmail() {   final String address = "badqiu(a)gmail.com";   final String subject = "test";   final String content = "async token test";   //返回的token,包含token.addResponder()用于监听异步方法的执行结果   AsyncToken token = sendAsyncEmail(address,subject,content);   //token可以继续传递给外部,以便外面感兴趣的listener监听这个异步方法的执行结果   token.addResponder(new IResponder() {    public void onFault(Exception fault) {    System.out.println("email send fail,cause:"+fault);    //此处可以直接引用address,subject,content,如,我们可以再次发送一次    sendAsyncEmail(address,subject,content);    }    public void onResult(Object result) {    System.out.println("email send success,result:"+result);    }   });   }   public AsyncToken sendAsyncEmail(String address,String subject,String content) {   final AsyncToken token = new AsyncToken();   Thread thread = new Thread(new Runnable() {    public void run() {    try {     //do send email job...     token.setComplete(executeResult); //通知Responder token执行完    }catch(Exception e) {     token.setFault(e); //通知Responder token发生错误    }    }   });   thread.start();   return token;   }

如上代码,使用AsyncToken的好处:

1.token可以无限传递,只要对方法的执行结果感兴趣,都可以监听方法的执行结果.

2.拥有上下文,还可以引用前面的参数,以执行任务email重发这种任务

3.一个token与一个方法对应,方法调用时你即知道token对应的事件,不需要使用listener模式中的一般用EventType来区别不现的事件

3.灵活转换,也可以将上面的token再转至listener,再由listener以事件的方式派发事件

与Listener的异同:

1.token可以无限传递

2.没有使用事件或是监听不同的方法,listener一般配合需要使用事件,然后由事件进行参数的绑定.

3.listener模式一般是先设置好listener,而AsyncToken可以得到token后再添加监听方法

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号