分享好友 移动开发首页 频道列表

AsyncTask 工作原理(上)

Android开发  2016-11-10 11:210

AsyncTask 是一种轻量级是异步任务类,它可以在线程池中执行后台任何,将执行的进度和最终结果传递给主线程,并在主线程中更新UI。

AsyncTask 是一个抽象类,其构造函数

//Params:传入doInBackground 中的参数类型
//Progress: 后台执行进度的类型,传入onProgressUpdate的参数类型
//Result: 后台任务执行完成之后,返回的参数类型,传入onPostExecute的参数类型
public abstract class AsyncTask<Params, Progress, Result>()

AsyncTask 提供了4个核心方法

protected void onPreExecute() {}
protected abstract Result doInBackground(Params... params);
protected void onProgressUpdate(Progress... values) {}
protected void onPostExecute(Result result) {}

onProExecute():该方法运行在主线程中,在异步任务执行之前,此方法会被调用,该方法一般用于做一些准备工作

doInBackground(Params… params):在线程池中执行,该方法用于执行异步任务。params 表示异步任务传入的参数。在该方法中可以调用

protected final void publishProgress(Progress... values)

方法来跟新异步任务的进度, publishProgress 方法 会调用到 onProgressUpdate方法,另外doInBackground方法执行完成之后,会调用到 onPostExecute方法;

onProgressUpdate(Progress… values): 该方法执行与主线程中,当后台任务的执行进度发生改变时,调用publishProgress方法后,该方法将会被调用。

onPostExecute(Result result):该方法执行与主线程中,用于当雨布任务执行完成之后,即doInbackground执行完成之后,Result 则为doInbackground的返回类型,result 为doInbackground的返回值。

通过上述描述 可以看出 AsyncTask 先执行onProExecute 然后执行 doInbackground 最后执行 onPostExecute;

注:AsyncTask 中还有一个方法 onCancelled()方法 该方法也执行在主线程中,当调用该方法后,则将不会执行 onPostExecute方法

代码示例:

public class DownLoadAsynTask extends AsyncTask<String, Integer, Bitmap> {
    public DownLoadAsynTask() {

    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

    }

    @Override
    protected Bitmap doInBackground(String... params) {
        return bitmap;
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        super.onPostExecute(bitmap);
    }
//AsyncTask 调用
new ImgAsynTask().execute();

通过上述代码示例,相信各位对AsyncTask中的三个泛型参数以及如何使用AsyncTask了吧

查看更多关于【Android开发】的文章

展开全文
相关推荐
反对 0
举报 0
评论 0
图文资讯
热门推荐
优选好物
更多热点专题
更多推荐文章
AsyncTask 工作原理(下)
本文主要是根据AsyncTask 源码进一步对 AsyncTask 异步任务有更深入的理解AsyncTask执行new AsynTask().execute()我们从AsyncTask的execute()方法开始 来分析AsyncTask的工作原理源码分析public final AsyncTaskParams, Progress, Result execute(Params...

0评论2016-11-10178

从源码角度一步步分析AsyncTask的用法与原理
AsyncTask 是Android特有的一个轻量级异步抽象类,在类中通过doInBackground()在子线程执行耗时操作,执行完毕在主线程调用onPostExecute()。前言众所周知,Android视图的绘制、监听、事件等都UI线程(主线程,Main Thread)执行,如果执行访问网络请求、数据

0评论2016-10-09114

探索美妙的AsyncTask实现及阅读源码收获
写作原因:AsyncTask是Android中轻量级异步操作的方案之一,这篇文章我们不谈其使用过程,我们要谈论的是其实现过程及背后相关的设计思想,这有利于提高我们的代码能力。源码分析入口:new DownloadTask().execute(url);AsyncTask是从execute()方法作为执行入

0评论2016-09-08147

Android的异步任务AsyncTask详解
本文给大家介绍的是Android的异步任务AsyncTask,在Android中实现异步任务机制有两种方式,Handler和AsyncTask。今天我们先来主要谈下ASYNCTASK。

0评论2015-09-1184

android教程之使用asynctask在后台运行耗时任务
AsyncTask用在需要在ui线程中调用、在背景线程中执行耗时任务、并且在ui线程中返回结果的场合。下面就是一个在背景中运行的AsyncTask的实现DownloadDBTask

0评论2015-07-1795

Android中AsyncTask的用法实例分享
AsyncTask的特点是任务在主线程之外运行,而回调方法是在主线程中执行, 这就有效地避免了使用Handler带来的麻烦

0评论2015-07-1672

android异步任务设计思详解(AsyncTask)
AsyncTask在Android十分常用,那为什么如此常用呢,不用行不行呢,内部又是怎么实现的呢,为什么Java的API中没有这个类呢,看完本文后,你将会知道答案

0评论2015-07-1673

Android中AsyncTask详细介绍
这篇文章主要介绍了Android中AsyncTask详细介绍,AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合,需要的朋友可以参考下

0评论2015-07-0372

更多推荐