AsyncTask异步更新UI界面以及原理

本文详细介绍了Android SDK1.5推出的AsyncTask类,它简化了后台线程与UI线程的交互。文章阐述了AsyncTask的工作原理及其提供的五个回调函数,帮助开发者更好地理解如何使用AsyncTask进行异步操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【摘录】http://blog.92coding.com/index.php/arichives/362.html

概述:

  AsyncTask是在Android SDK 1.5之后推出的一个方便编写后台线程与UI线程交互的辅助类。AsyncTask的内部实现是一个线程池,所有提交的异步任务都会在这个在这个线程池中的工作线程内执行,当工作线程需要跟UI线程交互时,工作线程会通知向在UI线程创建的Handler传递消息的方式,调用相关的回调函数,从而实现UI界面的更新。
AsyncTask抽象出后台线程运行的5个状态:
  1.准备运行
  2.正在后台运行
  3.进度更新
  4.完成后台任务
  5.取消任务
针对这五个阶段,AsyncTask提供了五个回调函数:
 1.准备运行:onPreExecute()。
  该回调函数在任务呗执行之后立即由UI线程调用。这个步骤通常用来建立任务,在用户接口(UI)上显示进度条。
 2.正在后台运行:doInBackground(Params...)
  该回调函数有后台线程在onPreExecute()方法执行结束后立即调用。
通常在这里执行耗时的后台计算。计算的结果必须由该函数返回,
并被传递到onPostExecute()中。在该函数内也可以使用publishProgerss(Progress...)
来发布一个或者多个进度单位(unitsof progress).这些值将会在onProgressUpdate(Progress...)
中被发布到UI线程。
 3.进度更新:onProgressUupdate(Progress...)
  该函数由UI线程在publishProgerss(Progress...)方法调用完后被调用。一般用于动态地显示一个进度条。
 4.完成后台任务:onPostExecute(Result)
  当后台计算结束后调用。后台计算的结果会被作为参数传递给这一函数。
 5.取消任务:onCancelled()
   在调用AsyncTask的cancel()方法时调用。AsyncTask的构造函数有三个模板参数:
   1)Params ,传递给后台任务的参数类型
   2)Progress,后台计算执行过程,进步单位(progress  units)的类型。
   3)Result.后来执行返回的结果的类型
AsyncTask并不总是需要上面的全部3种类型。标识不使用的类型很简单,只需要使用Void类就可以了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值