AsyncToken模式,替换凡是的Listener模式
当前位置:以往代写 > JAVA 教程 >AsyncToken模式,替换凡是的Listener模式
2019-06-14

AsyncToken模式,替换凡是的Listener模式

AsyncToken模式,替换凡是的Listener模式

对付一个异步的要领挪用,我们需要异步的获得挪用功效,凡是我们会利用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后再添加监听要领

    关键字:

在线提交作业