AsyncTask 工作原理(上)

   2016-11-10 0
核心提示:AsyncTask 是一种轻量级是异步任务类,它可以在线程池中执行后台任何,将执行的进度和最终结果传递给主线程,并在主线程中更新UI。AsyncTask 是一个抽象类,其构造函数//Params:传入doInBackground 中的参数类型//Progress: 后台执行进度的类型,传入onProgre

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了吧

 
标签: AsyncTask Bitmap
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

点击排行