当前位置: 首页 > news >正文

异步任务与回调

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

首先将异步任务及回调包装在一个controller类中

package com.example.zzz;
import android.content.Context;
import android.os.AsyncTask;
public class BaseController {
 private Context ctx;
 private BaseControllerCallBack callback;
 /**
  * 构造函数
  * @param ctx
  * @param BaseControllerCallBack callback
  */
 public BaseController(Context ctx, BaseControllerCallBack callback){
  this.ctx=ctx;
  this.callback=callback;
 }
 public void prepareTask(String param1,String param2,String param3){
  new PrepareTask(param1,param2).execute(param3);
 }
 
 public void doTask(String param1,String param2,String param3){
  new DoTask(param1,param2).execute(param3);
 }
 
 
 public class PrepareTask extends AsyncTask<String, Void, String>{
  private String param1;
  private String param2;
  private String param3;
  
  public PrepareTask(String param1,String param2){
   this.param1=param1;
   this.param2=param2;
  }
  @Override
  protected String doInBackground(String... params) {
   param3=params[0];
   return test(param1,param2,param3);
  }
  @Override
  protected void onPostExecute(String result) {
   if(callback!=null){
    callback.onPreparedDone(result);
   }
  }
  
 }
 public class DoTask extends AsyncTask<String, Void, String>{
  private String param1;
  private String param2;
  private String param3;
  
  public DoTask(String param1,String param2){
   this.param1=param1;
   this.param2=param2;
  }
  @Override
  protected String doInBackground(String... params) {
   param3=params[0];
   return test(param1,param2,param3);
  }
  @Override
  protected void onPostExecute(String result) {
   if(callback!=null){
    callback.onDoTaskDone(result);
   }
  }
  
 }
 
 
 //===============回调接口================//
 public interface BaseControllerCallBack{
  /**
   * action1
   * @param result
   */
  public void onPreparedDone(String result);
  /**
   * action2
   * @param result
   */
  public void onDoTaskDone(String result);
 }
 
 private String test(String param1,String param2,String param3){
  return "hello";
 }
 
}

在主程序中调用时

private void init() {

     controller=new BaseController(getApplicationContext(), callback);

     controller.prepareTask("11", "22", "33");

 }

    private BaseControllerCallBack callback=new BaseControllerCallBack() {

  

  @Override

  public void onPreparedDone(String result) {

   controller.doTask("11", "22", "33");

  }

  

  @Override

  public void onDoTaskDone(String result) {

   //dosomething

  }

  

 };


转载于:https://my.oschina.net/u/2314381/blog/374702

相关文章:

  • html块级元素与行内元素
  • java web project --classpath
  • IIS6与IIS7在编程实现HTTPS绑定时的细微差别
  • 【HDU】1847 Good Luck in CET-4 Everybody!
  • Javassist初体验
  • JavaScript高级程序设计--基本概念--笔记
  • javabean总结
  • Css布局系列-经典三列布局
  • msyql查表报InnoDB错误
  • Nodejs使用TLS
  • Overview
  • puppet注意事项
  • LAMP搭建小结
  • 【AngularJS】—— 5 表单
  • 用显微镜观察cpu芯片内部
  • SegmentFault for Android 3.0 发布
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • CentOS 7 防火墙操作
  • crontab执行失败的多种原因
  • HTML中设置input等文本框为不可操作
  • JAVA并发编程--1.基础概念
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • nodejs实现webservice问题总结
  • Sass 快速入门教程
  • uni-app项目数字滚动
  • web标准化(下)
  • windows下mongoDB的环境配置
  • 成为一名优秀的Developer的书单
  • 检测对象或数组
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何选择开源的机器学习框架?
  • 如何在GitHub上创建个人博客
  • 数据可视化之 Sankey 桑基图的实现
  • 通过npm或yarn自动生成vue组件
  • 我这样减少了26.5M Java内存!
  • 优秀架构师必须掌握的架构思维
  • scrapy中间件源码分析及常用中间件大全
  • (1)(1.9) MSP (version 4.2)
  • (4)(4.6) Triducer
  • (6)设计一个TimeMap
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二)springcloud实战之config配置中心
  • (附源码)springboot优课在线教学系统 毕业设计 081251
  • (三)模仿学习-Action数据的模仿
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (原创)攻击方式学习之(4) - 拒绝服务(DOS/DDOS/DRDOS)
  • (原創) 如何刪除Windows Live Writer留在本機的文章? (Web) (Windows Live Writer)
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .“空心村”成因分析及解决对策122344
  • .Net Web窗口页属性
  • .net 托管代码与非托管代码
  • .NET实现之(自动更新)
  • @EnableConfigurationProperties注解使用
  • @Mapper作用