`
zheyiw
  • 浏览: 1025039 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

用于后台执行线程的基类

阅读更多

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);
		}
	}
}


分享到:
评论

相关推荐

    winform开发使用通用多线程基类分享(以队列形式)

    这里介绍的`QueueThreadBase&lt;T&gt;`是一个设计用于Winform应用的多线程基类,它采用了队列的形式来管理待处理的任务。`QueueThreadBase&lt;T&gt;`的核心特性包括: 1. **队列管理**:类中的`m_InnerQueue`是内部使用的队列,...

    MFC多线程 工作者线程 用户界面线程

    CWinThread是所有MFC线程的基类,负责线程的创建、调度和管理。创建新线程时,通常需要继承CWinThread并重写它的成员函数,比如Run(),在这里实现线程的具体任务。 二、工作者线程 工作者线程(Worker Thread)主要...

    多线程mfc进度条

    `CWinThread`是MFC提供的线程基类,它包含了线程的基本管理和消息处理功能。在这个示例中,我们可能会看到一个自定义的线程类,如`CProgressThread`,用于执行耗时任务。 2. **进度条控件(ProgressCtrl)**:`...

    MFC学习:多线程

    用户界面线程一般用于处理独立于其他线程执行之外的用户输入,响应用户及系统所产生的事件和消息等。 在深入了解MFC下创建线程的方法之前,需要先深入学习一下CWinThread类。CWinThread类在MFC类结构中的位置如下图...

    .NET多线程详解

    异步操作可以在单线程环境中执行,利用I/O完成端口或回调函数,而多线程涉及多个执行线程。异步编程可以避免线程切换的开销,但在某些场景下,多线程是提高并行性的有效手段。 ### WinForm多线程问题 在WinForm应用...

    MFC多线程例子

    MFC多线程是MFC库中的一个重要特性,允许开发者在同一个应用程序中创建和管理多个执行线程,从而实现并发处理任务,提高程序效率。在Windows操作系统中,多线程技术广泛应用于UI更新、后台数据处理、异步操作等场景...

    多线程示例

    1. **创建线程类**:首先,我们需要定义一个派生自`CWinThread`的类,这是MFC中的线程基类。在这个派生类中,我们将重写`CWinThread`的虚函数,如`Run()`,在这里编写线程的主要执行逻辑。 2. **设置线程属性**:在...

    .Net线程的基础及问题

    此外,还可以使用`Delegate.BeginInvoke`进行异步方法调用,这会在后台线程执行。或者,使用线程池`ThreadPool.QueueUserWorkItem`来调度任务,它能更有效地管理线程资源。 线程分为受托管线程(Managed Thread)和...

    MFC 多线程应用, 包括工作线程, 用户界面线程

    - **工作线程(Worker Thread)**:工作线程通常不与用户界面交互,而是负责后台处理,如数据计算、网络通信等。它们可以避免因长时间运算导致用户界面无响应。 - **用户界面线程(User Interface Thread)**:...

    线程入门至精通

    - **线程类型**:包括主线程(GUI线程)和工作线程,主线程负责用户界面,工作线程通常用于执行耗时操作,不阻塞UI更新。 3. **线程同步与通信** - **临界区**:用于保护共享资源,一次只允许一个线程访问。 - *...

    mfc编写的用户界面多线程的小例子

    多线程解决了这个问题,将耗时操作放在后台线程执行,主线程则继续处理用户交互。在MFC中,可以使用CWinThread类来创建新线程,它是所有线程类的基础。每个线程都有自己的消息队列和消息循环,可以独立处理任务。 ...

    CollThread_delphi_多线程_

    TThread是Delphi中的线程基类,它封装了Windows API中的线程管理功能。通过继承TThread类并重写其Execute方法,开发者可以在新的线程上下文中执行自定义代码。例如,在数据采集的场景下,Execute方法内可以编写用于...

    DELPHI7 线程自动刷新

    `Synchronized`属性用于决定线程是否能在主线程上同步执行代码,防止数据竞争问题。`FreeOnTerminate`则指示线程结束时是否自动释放自身。 3. **线程的启动与结束**:默认情况下,新建的线程不会立即运行,需要调用...

    Qt主线程与次线程通信实例代码

    开发者可以使用QtConcurrent.run()在后台线程中执行函数,然后通过QFuture和QFutureWatcher监听任务的完成情况,这在需要执行大量并行计算时非常有用。 在"ThreadTest"这个压缩包中,可能包含了一个或多个示例程序...

    DELPHI多线程

    TThread是VCL框架中提供的一种用于创建和管理线程的基类。开发者可以自定义TThread的子类,覆盖其Execute方法来添加线程执行的具体逻辑。创建线程时,可以通过构造函数初始化线程对象,然后调用Start方法启动线程。...

    MFC用户界面线程的创建示例

    1. **创建线程类**:首先,我们需要创建一个继承自`CWinThread`的类,这是MFC中的线程基类。在派生类中,重写`CWinThread::Run()`方法以定义线程的主要工作。 2. **线程标识**:在线程类中,我们需要设置`m_...

    Delphi多线程Demo

    而额外的线程则可以在后台运行,执行特定任务,如数据处理、网络通信等,这样不会阻塞主线程,使得用户界面保持响应。 在Delphi中,我们可以使用TThread类来创建自定义线程。TThread是VCL(Visual Component ...

    MultiThread(VS2013 MFC多线程-含源码-含个人逐步实现文档)

    1. `CWinThread`:这是MFC中的线程基类,代表了操作系统中的一个线程。你可以通过继承这个类并重写其成员函数来实现自己的线程逻辑。 2. `AfxBeginThread`:这是MFC提供的一个函数,用于创建和启动一个新的线程。你...

    .Net线程问题解答

    5. **简化WinForm多线程开发**:可以使用BackgroundWorker组件,它提供了一种简单的方式来在后台线程执行耗时操作,并通过事件在UI线程更新进度。 **线程池** 1. **线程池的作用**:线程池提高了线程的使用效率,...

    (.net)线程详解

    WaitHandle是一个抽象基类,用于线程同步,如Mutex、Semaphore和EventWaitHandle。它们可用于控制线程的执行顺序和资源访问。 15. **双锁实现Singleton** 双重检查锁定(DCL)用于线程安全地初始化Singleton实例...

Global site tag (gtag.js) - Google Analytics