码迷,mamicode.com
首页 > 其他好文 > 详细

异步任务与回调

时间:2015-02-03 11:23:02      阅读:167      评论:0      收藏:0      [点我收藏+]

标签:

首先将异步任务及回调包装在一个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

  }

  

 };


异步任务与回调

标签:

原文地址:http://my.oschina.net/u/2314381/blog/374702

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!