AsyncTask(异步任务)个人理解

1.AsyncTask介绍:在开发Android移动客户端时由于当下的程序很多都会联网进行数据交互,为了防止ANR(Application Not Response)现象,通常情况下程序会开多个线程,并将耗时的操作放到

主线程之外的线程中运行,而不会只用一个主线程,AsyncTask是线程的另一种表现形式,它可以做耗时操作并且操作后可以在onPostExecuse()方法中直接更新UI的数据.

2.AsyncTask使用方法:

   首先创建一个类继承AsyncTask<参数1,参数2,参数3>并重写AsyncTask里面的方法(按执行顺序编号);

  1>  :  onPreExecute()  在执行在实际耗时操作之前,可以在此方法中做一些控件的实例化操作,此方法运行后直接运行doInBackGround(Paramas...)

  2>  :  doInBackGround(Params...)  此方法是实际做耗时造作的方法,该方法中的参数Params是可变参数

  3>  :  onProgressUpdate(Progress)  此方法可以获取耗时操作的运行进度(下载时可以在这里显示下载进度)

  4>  :  onPostExecute(Result )   此方法在doInBackGround(Params...)方法完成后被UI调用,在此方法里可以进行更新UI操作.

3.AsyncTask<参数1,参数2,参数3> 中三个参数介绍:

  参数1: 传入doInBackGround(Params...) 中的值的类型

  参数2: 传入onProgressUpdate(Progress)中的值的类型

  参数3: 传入onPostExecute(Result )中的值的类型,也是doInBackGround(Params...)返回的值的类型

4.AsyncTask使用注意:

  AsyncTask必须在UI线程中实例化,并且在UI线程中调用execute方法运行AsyncTask

  不要在UI线程中调用AsyncTask中的某一个或多个方法

  同一个AsyncTask只能被调用一次,AsyncTask中的doInBackGround(Params...)是一个线程,当同一个AsyncTask被重复调用时相当于开了多个线程,而线程是同步执行的容易导致程序出错.

时间: 2024-09-17 09:06:30

AsyncTask(异步任务)个人理解的相关文章

Android中使用Thread线程与AsyncTask异步任务的区别

最近和几个朋友交流Android开发中的网络下载问题时,谈到了用Thread开启下载线程时会产生的Bug,其实直接用子线程开启下载任务的确是很Low的做法,那么原因究竟如何,而比较高大上的做法是怎样?于是用这篇博文详细分析记录一下. 一.概念介绍 Thread是指在CPU运行的一个程序中,可以有多个执行路径.运行的程序称作进程,而这个执行路径,就被称为线程(如果对这两个名词不太理解的同学可以参考一下操作系统方面的书籍).Java中的多线程是指多个Thread可以在一段内同步执行,这样可以提高代码

AsyncTask异步任务 源码解读

之前我们介绍了Handler的一些基本用法,也解读了Handler的源码.通过Handler我们可以简便的切换到主线程进行UI操作.而AsyncTask的出现使我们不用去关心线程管理和切换的一些细节,我们可以更轻松的去操作UI. 基本概念 AsyncTask异步任务的作用 AsyncTask,见名之意,异步任务.允许我们在后台做一些耗时操作,然后切换到主线程更新,而且这一过程变得非常简便.一提到异步任务,我们的第一反应就是多线程.假如我们现在需要去下载一张图片,然后在界面上显示,如果没有Asyn

Android多线程分析之五:使用AsyncTask异步下载图像

Android多线程分析之五:使用AsyncTask异步下载图像 罗朝辉 (http://blog.csdn.net/kesalin) CC 许可,转载请注明出处 在本系列文章的第一篇<Android多线程分析之中的一个:使用Thread异步下载图像>中.曾演示了怎样使用 Thread 来完毕异步任务. Android 为了简化在 UI 线程中完毕异步任务(毕竟 UI 线程是 app 最重要的线程).实现了一个名为 AysncTask 的模板类.使用 AysncTask 能够在异步任务进行的同

同步机制与异步机制的理解

同步机制与异步机制的理解 同步机制即在进行输入输出时,必须等待输入输出完毕后,才能进行后面的操作. 异步传输机制就不必等待完毕就可进行其它操作. 网络上有一个比较通俗的例子:请吃饭 同步就是我叫你吃饭,你听到了就立刻跟我去,若你没有反应,那我就不停的叫你,直到你回应.(同步的特点是我不能做其他任何的事情,专心等你...个人觉得女生肯定希望遇到此类的男生吧...) 异步就是我叫了你,然后我就去吃饭了,不管你听没听见.(异步的特点是不会等待正在执行的事件结束,他就可以执行其它的事件). 看了别人的帖

asyncTask异步任务:从网络下载图片

[关键字]:3个参数,4个步骤 第一步:表示任务执行前的操作 第二步:主要完成耗时操作 第三步:主要是更新UI操作 第四步:产生最终结果 以下实例中代表的含义为: 第一步:显示进度条 第二步:(此任务必不可少)在后台执行任务,将进度值传给第三步,将结果传给第四步: 第三步:进度值更新 第四步:产生最终结果 1.添加网络授权: 因为手机默认不能访问网络,所以首先要在清单文件 AndroidManifest.xml中添加网络授权. 方法如下: 打开AndroidManifest.xml文件,点击"P

AsyncTask 异步线程 用法

AsyncTask介绍Android的AsyncTask比Handler更轻量级一些,适用于简单的异步处理.首先明确Android之所以有Handler和AsyncTask,都是为了不阻塞主线程(UI线程),且UI的更新只能在主线程中完成,因此异步处理是不可避免的.Android为了降低这个开发难度,提供了AsyncTask.AsyncTask就是一个封装过的后台任务类,顾名思义就是异步任务.AsyncTask直接继承于Object类,位置为android.os.AsyncTask.要使用Asy

白龙卫士+异步消息的理解

白龙卫士+异步消息的理解 手机卫士 MobileSafe MobileSafe 1.0 Splash界面的(设置一个渐变动画) 只加载计入界面,–>主页 根据功能模块划分 Activity com.itheima.mobilesafe.activty 后台服务 com.itheima.mobilesafe.service 广播接受者 com.itheima.mobilesafe.receiver 数据库 com.itheima.mobilesafe.db.dao 对象(java bean) co

Android AsyncTask异步任务

在上一篇文章<Android网络编程之使用HttpClient进行Get方式通信>中,我们强制直接在UI线程进行网络操作,在实际的应用开发过程中不能这样做,因为这样很可能会阻塞UI,影响用户体验.为了避免直接在UI线程中进行网络操作,我们可以使用AsyncTask异步处理网络通信和UI更新.通过AysncTask可以很容易的启动后台线程进行网络通信,然后将结果返回到UI线程中. AsyncTask是Android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操作,并提供接

Android异步更新UI的方式之使用AsyncTask异步任务

由于性能要求,android要求只能在UI线程中更新UI,要想在其他线程中更新UI,给大家介绍一种方式:使用AsyncTask异步任务. 下面用这种方式更新一个TextView: 注:更新UI的操作只能在onPostExecute(String result)方法中. package com.example.runonuithreadtest;  import android.app.Activity;  import android.os.AsyncTask;  import android.