当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:14:00  来源:本站整理

AsyncToken情势,替换普通的Listener情势[Java编程]

赞助商链接



  本文“AsyncToken情势,替换普通的Listener情势[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

关于一个异步的办法调用,我们需求异步的得到调用后果,普通我们会利用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后再增添监听办法


  以上是“AsyncToken情势,替换普通的Listener情势[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • AsyncToken情势,替换普通的Listener情势
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .