首页 > 其他 > 详细

异步任务与回调

时间:2015-02-03 11:22:43      阅读:291      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!