首页 > 移动平台 > 详细

模拟android的AsyncTask类——异步任务工具类

时间:2015-10-14 02:14:19      阅读:228      评论:0      收藏:0      [点我收藏+]

my git :?https://github.com/hejiawang

?

? ? ? ? Android的AsyncTask类是处理异步任务的工具类,使程序员不用new Thread,不用写handler,只要使用AsyncTask类就能实现异步任务的处理了,但是不能说只用AsyncTask类而不要handler了,因为AsyncTask类在源码实现时,起的是一个线程池,在这个线程池中会有一定数量的线程。

AsyncTask类部分源码:

/**
     * An {@link Executor} that can be used to execute tasks in parallel.
     */
    public static final Executor THREAD_POOL_EXECUTOR
            = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE,
                    TimeUnit.SECONDS, sPoolWorkQueue, sThreadFactory);

?所以,在使用AsyncTask类时,不能盲目。。

?

参看AsyncTask类的源码,下面是模拟AsyncTask类功能的代码,就是把new Thread() 和 handler封装在一起。。。

package com.wang.mobilesafe.utils;

import android.os.Handler;

/**
 * 模拟android的AsyncTask类
 * </br>
 * 一个异步任务的工具类
 * </br>
 * 模板设计模式
 * @author HeJW
 *
 */
public abstract class MyAsyncTask {
	
	private Handler handler = new Handler(){
		public void handleMessage(android.os.Message msg) {
			
			onPostExecute();
		};
	};
	
	/**
	 * 耗时任务开始之前执行的方法
	 */
	public abstract void onPreExecute();
	
	
	/**
	 * 耗时任务执行之后调用的方法
	 */
	public abstract void onPostExecute();
	
	/**
	 * 执行的耗时任务,运行在子线程中
	 */
	public abstract void doInBackground();
	
	/**
	 * 执行任务
	 */
	public void execute(){
		
		onPreExecute();
		new Thread(){
			
			public void run() {
				
				doInBackground();
				handler.sendEmptyMessage(0);
			};
		}.start();
		
	}
}

?

模拟android的AsyncTask类——异步任务工具类

原文:http://hejiawangjava.iteye.com/blog/2248758

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!