package com.hk.wos;
import android.os.AsyncTask;
/**
* 方便在activity中获取网络任务
*
* @author 包子大叔
* @time 2013-8-15 下午4:16:18
*/
public abstract class BaseTaskActivity extends BaseActivity {
/**
* 后台线程,一般用于获取网络任务
*/
protected MyTask myTask;
/**
* 判断默认线程myTask是否正在运行
*
* @return
*/
protected boolean isTaskWorking() {
if (myTask != null) {
return true;
} else {
return false;
}
}
/**
* 启动线程,一般用于网络数据的获取; 线程主体请实现doInTask()方法, 线程结束后将调用onTaskOver()方法;
*/
protected void startTask() {
if (isTaskWorking()) {
toast("任务正在执行...");
} else {
showDialogLoading(true);
myTask = new MyTask();
myTask.execute();
}
}
/**
* 线程主体,只能做数据处理,不能处理UI
*
* @return 返回网络任务得到的json字符串,本字符串会传入onTaskOver()方法中
*/
abstract protected String doInTask();
/**
* 线程完成后触发本方法,可以在这里进行数据处理,UI处理,(不需要关系线程和等待中对话框)
*
* @param result
* 后台线程主体doInTask()方法返回的字符串
*/
abstract protected void onTaskOver(String result);
/**
* 一般用于获取网络数据
*
* @author 包子大叔
* @time 2013-8-15 下午4:14:58
*/
public class MyTask extends AsyncTask<Void, Void, Boolean> {
String result = "";
@Override
protected Boolean doInBackground(Void... params) {
result = doInTask();
return true;
}
@Override
protected void onPostExecute(final Boolean success) {
myTask = null;
showDialogLoading(false);
onTaskOver(result);
}
@Override
protected void onCancelled() {
myTask = null;
showDialogLoading(false);
}
}
}