AsyncTask类浅析

使用AsyncTask类遵守的准则:

1  Task的实例必须在UI thread中创建;

2  Execute方法必须在UI thread中调用;
3  不要手动的调用onPfreexecute(),onPostExecute(result)Doinbackground(params…),onProgressupdate(progress…)这几个方法;
4 该task只能被执行一次,否则多次调用时将会出现异常;
AsyncTask的整个调用过程都是从execute方法开始的,一旦在主线程中调用execute方法,就可以通过onpreExecute方法,这是一个预处理方法,比如可以在这里开始一个进度框,同样也可以通过onprogressupdate方法给用户一个进度条的显示,增加用户体验;最后通过onpostexecute方法,相当于handler处理UI的方式,在这里可以使用在doinbackground得到的结果处理操作UI。此方法在主线程执行,任务执行的结果作为此方法的参数返回。

此外,AsyncTask底层是一个线程池 而Handler仅仅就是发送了一个消息队列,连线程都没有开。但是,如果异步任务的数据特别庞大,AsyncTask这种线程池结构的优势就体现出来了。

AsyncTask类浅析,布布扣,bubuko.com

时间: 2024-10-11 22:09:14

AsyncTask类浅析的相关文章

Android中多线程编程(四)AsyncTask类的详细解释(附源码)

Android中多线程编程中AsyncTask类的详细解释 1.Android单线程模型 2.耗时操作放在非主线程中执行 Android主线程和子线程之间的通信封装类:AsyncTask类 1.子线程中更新UI 2.封装.简化异步操作. 3.AsyncTask机制:底层是通过线程池来工作的,当一个线程没有执行完毕,后边的线程是无法执行的.必须等前边的线程执行完毕后,后边的线程才能执行. AsyncTask类使用注意事项: 1.在UI线程中创建AsyncTask的实例 2.必须在UI线程中调用As

Looper类浅析

Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理.handler其实可以看做是一个工具类,用来向消息队列中插入消息的. (1) Looper类用来为一个线程开启一个消息循环.        默认情况下android中新诞生的线程是没有开启消息循环的.(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环.)        Looper对象通过MessageQueue来存放消息和事件.一个线程只能有一个Looper,对应一

AsyncTask类插入数据到服务器与接口回调

////////////////2016/04/21///////////////////// //////////////by XBW/////////////////////////// ///////////环境  api22 eclipse ///////////// 搞了这么久终于弄好了接口,之前都是一个人在做项目,自己随心所欲的写代码,想怎么写就怎么写,到了团队呢,这接口那接口,各种类,各种枚举,各种内部类,抽象类,单例懒汉,单例饿汉的,也算学了不少东西, 我做的是把数据插入到数据库

Android的AsyncTask类的解读

国庆节放假,搞了半个月都没有上班了,coding的时候一点都不在状态,本来这篇文章是在国庆节前写完的,但是因为自己的懒 惰,导致延期到国庆节,哎,这种习惯真心不好呀...不多说了下面来进入正题 之前我们解读了Handler机制,今天再来看一下AsyncTask类,因为这两个类使我们在Android进行耗时的操作的时候,不影响主线 程的情况下经常使用的两个类,我们先来看一下AsyncTask类源码中定义的变量: private static final ThreadFactory sThreadF

多线程——AsyncTask类的使用(一)

When an asynchronous task is executed, the task goes through 4 steps: onPreExecute(), invoked on the UI thread before the task     is executed. This step is normally used to setup the task, for instance by     showing a progress bar in the user inter

安卓学习笔记之AsyncTask机制浅析

一.相关基础 1 用途 用于快速开启异步任务,处理耗时操作.在线程池中处理异步任务,同时可以将进度和处理结果提交到主线程处理. 2 AsyncTask 泛型参数-Params, Progress, Result Params 表示传入doInBackground参数的类型 Progress 表示后台任务执行进度的类型 Result 表示后台任务执行完成后返回结果的类型 若不需要传入具体的参数,传入Void即可 3 常见方法 onPreExecute 执行任务之前,UI线程,在doInBackgr

AsyncTask源代码浅析(一)

在android开发过程中AsyncTask会经常跟它打交道,网上也有不少对于它的说明,所以在这里就不说它的使用方法了,直接写 自己对它的一些学习心得以及浅显的理解,错误之处忘批评指正. 1.AsyncTask的三个状态: AsyncTask是一个抽象类,提供了一个抽象方法doInBackground来供子类实现,以便让使用者自己来实现一些比较耗时的工作. 在AsyncTask的生命周期中任务分为三个状态,有变量mStatus来控制,mStatus为枚举类型,枚举类的名称为Status: PEN

Thread并发请求封装——深入理解AsyncTask类

在Android开发中,由于不能再UI线程中做耗时操作,常常需要开启线程来做一些操作.但是这样一来就产生了一个问题,就是大量的线程并发执行,造成了线程维护的开销进而使得代码质量下降手机发烫又耗电.让我们来看一下KJFrameForAndroid框架是如何解决这个问题的.KJFrameForAndroid框架项目地址:https://github.com/kymjs/KJFrameForAndroid. 其实Android提供了一套专门用于异步处理的类,就是我们熟悉又模式的AsynTask类.As

JDK中日期和时间的几个常用类浅析(五)

LocalDateTime   LocalDateTime是JDK8中才引入的类,用来表示不包含时区信息的本地日期和时间.我们可以把LocalDateTime看作是LocalDate和LocalTime的一个组合类.同样地,该类是一个不可变类,所以作用于该类对象上的方法都是返回一个该类的新对象.  通常,我们使用该类的静态工厂方法来创建该类对象.两种创建该类对象的示例代码如下:LocalDateTime ldt1 = LocalDateTime.now();LocalDateTime ldt2