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); } } }
用于后台执行线程的基类
猜你喜欢
转载自zheyiw.iteye.com/blog/1925040
今日推荐
周排行