Android编程:用AsyncTask实现多线程pdf,txt教程

我们还建立了一个公共的百度云盘,2TB容量,供大家上传优秀编程资源,账号和密码加群之后会发送


也创建了《程序员联盟》的微社区,方便大家提问和互动
可以关注一下

微社区地址和二维码如下: http://m.wsq.qq.com/264152148 在Android应用开发中,有时我们需要实现任务的同步

Android里的AsyncTask类可以帮我们更好地管理线程同步(异步方式),就像Thread类能做的,不过用法比Thread更简单

AsyncTask介绍 在你开发Android应用程序时, 如果在一个Activity里有一个耗时任务(通常是一个子线程),并且这个 任务调用/操作了主线程, 应用就会抛出著名的“ANR” (Application Not Responding)错误

Figure 1: ANR AsyncTask类可以帮我们解围,使用AsyncTask能让我们正确及简便地使用主线程,即使此时另有一个异步线程被创建

它使得耗时任务可以在后台执行,并在前台(UI线程或主线程)把执行结果展现出来,不必用到Thread类或Handler类

线程间通信也随之变得更简单,优雅

* 主线程(User Interface Thread UI线程)是在Android里负责和用户界面进行交互的线程

AsyncTask是一个抽象类,必须被继承才能实例化

有三个泛型参数,分别是: Params , Progress 和 Result : – Params : 传递给执行的任务的参数,也就是 doInBackground 方法的参数

– Progress : 后台任务执行过程中在主线程展现更新时传入的参数, 也就是 onProgressUpdate 方法的参数

– Result : 后台执行的任务返回的结果, 也就是 onPostExecute 方法的参数

除此之外,继承AsyncTask类时,一般需要实现四个方法

当然应用程序不需要调用这些方法,这些方法会在任务执行过程中被自动调用: onPreExecute, doInBackground, onProgressUpdate 和 onPostExecute (其中的 doInBackground 抽象方法必须要被子类重写): – onPreExecute : 此方法在主线程中执行,用于初始化任务

– doInBackground : 此方法在后台执行
此方法在 onPreExecute 方法执行完后启动
这个方法中执行的操作可以是耗时的,并不会阻塞主线程

通过调用 publishProgress 方法来在主线程显示后台任务执行的结果更新

– onProgressUpdate : 此方法也在主线程中执行,每当 publishProgress 方法 被调用时,此方法就被执行,此方法只在 doInBackground 执行过程中才能被调用

– onPostExecute : 在 doInBackground 方法执行完之后启动的方法,在后台任务结束后才调用此方法,也在主线程执行

实例 为了更好地展现AsyncTask的使用,我们来实现一个计时器的小应用

首先我们创建一个Android项目,就命名为“AsyncTaskActivity”好了(名字无所谓),修改 res->layout 里的定义主用户界面的 xml 文件: main.xml

发表回复