模拟android的AsyncTask类——异步任务工具类
程序员文章站
2022-05-15 21:21:42
...
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中的日志工具类Log详细介绍
-
Android的线程通信:消息机制原理(Message,Handler,MessageQueue,Looper),异步任务AsyncTask,使用JSON
-
Android中异步类AsyncTask用法总结
-
Android中异步类AsyncTask用法总结
-
Android 数据存储之 FileInputStream 工具类及FileInputStream类的使用
-
Android获取手机信息的工具类
-
Android开发实现的几何图形工具类GeometryUtil完整实例
-
Android开发中4个常用的工具类【Toast、SharedPreferences、网络及屏幕操作】
-
Android开发实现的内存管理工具类
-
Android开发实现的Intent跳转工具类实例