AsyncTask用法实例 用AsyncTask更新进度条ProgressBar(防止UI线程阻塞)

AsyncTask直译为异步任务,顾名思义,就是跟UI线程不同步,相对于UI来说是另一个线程,跟Handler类似,可以在后台执行任务,然后根据执行结果更新UI。今天这个例子以更新进度条ProgressBar为例,前面有过一篇通过Handler更新ProgressBar的笔记,感兴趣的朋友可以看看区别。效果就不传图片了,反正就是那样,就是一进度条进度不停地增加,还有一个TextView显示当前进度值(0-100),执行完会在标题栏提示“执行完毕”。
先是布局xml:

Android程序开发 Handler对象用法(用Handler控制ProgressBar)

当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无响应,如果时间过长,程序还会挂掉。Handler就是把这些功能放到一个单独的线程里执行,与Activity互不影响。今天的例子就结合前几天学的进度条ProgressBar,用Handler更新ProgressBar.
先看最终效果图吧:

Android UI设计 进度条ProgressBar用法举例

进度条可以方便地告诉用法现在执行任务的进度,特别是一个程序需要执行比较长一段时间时,如果没有进度条,用户不知道程序在执行,会以为程序假死而强制关闭程序。
效果图

从上往下,第一个是默认的进度条,第二是大点的,第三是小点的,第四是条状的,关键区别在于xml中的style.