package com.mfh.comna.comn.logic;
import android.app.ProgressDialog;
/**
* 执行后台异步任务并在任务请求结束后根据结果绘制UI界面的接口
* 相当于Android AsyncTask的接口。
*
* 其中P代表参数,T代表异步执行的结果类型
* @author zhangyz created on 2013-4-10
* @since Framework 1.0
*/
public interface IAsyncTask<P, T> {
/**
* 1、由后台线程执行后台异步任务;内部已经处理了异常(会调用doInBackgroundException),子类不需要catch;
* @param taskKind 任务号
* @param params 任务执行参数
* @return 返回执行的数据,结果可能是一个object或object数组
* @author zhangyz created on 2013-4-11
*/
T doInBackground(int taskKind, P... params);
/**
* 后台线程开始处理数据
* 该方法应在UI主线程中运行
* @author zhangyz created on 2013-5-15
*/
ProgressDialog onPreExecute(int taskKind);
/**
* 2、由后台线程执行,后台异步任务出错时调用此方法
* @param ex 异常
* @param params 执行异步任务时的参数
* @return
* @author zhangyz created on 2013-4-11
*/
void doInBackgroundException(int taskKind, Throwable ex, P... params);
/**
* 后台线程正在处理数据
* 可以执行进度条显示
* 该方法应在UI主线程中运行
* @param values 进度数据
* @author zhangyz created on 2013-4-11
*/
void onProgressUpdate(int taskKind, Integer... values);
/**
* 3、后台执行成功后,由ui主线程执行更新前台UI界面的任务接口
* @param taskKind 任务号
* @param result 任务执行结束后返回的参数
* @param params 当时执行任务传递的参数
* @author zhangyz created on 2013-4-11
*/
void onPostExecute(int taskKind, T result, P... params);
}