Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7553513
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: Android平台

2015-11-26 09:13:17

在Android 1.5之后专门提供了一个android.os.AsyncTask(直译为非同步任务)类,通过此类完成非阻塞的操作类,其功能与Handler类似,可以在后台进行操作之后更新主线程的UI,但其使用的方式要比Handler容易许多。

点击(此处)折叠或打开

  1. public class MyAsyncTaskDemo extends Activity {
  2.     private ProgressBar bar = null;            // 进度条组件
  3.     private TextView info = null;        // 文本显示组件
  4.     @Override
  5.     public void onCreate(Bundle savedInstanceState) {
  6.         super.onCreate(savedInstanceState);
  7.         super.setContentView(R.layout.main);        // 调用布局管理器
  8.         this.bar = (ProgressBar) super.findViewById(R.id.bar);    // 取得组件
  9.         this.info = (TextView) super.findViewById(R.id.info);    // 取得组件
  10.         ChildUpdate child = new ChildUpdate() ;        // 子任务对象
  11.         child.execute(100) ;             // 为休眠时间
  12.     }
  13.     private class ChildUpdate extends AsyncTask<Integer, Integer, String> {
  14.         @Override
  15.         protected void onPostExecute(String result) {        // 任务执行完后执行
  16.             MyAsyncTaskDemo.this.info.setText(result) ;    // 设置文本
  17.         }
  18.         @Override
  19.         protected void onProgressUpdate(Integer... progress) {    // 每次更新之后的数值
  20.             MyAsyncTaskDemo.this.info.setText("当前进度是:"
  21.                     + String.valueOf(progress[0]));// 更新文本信息
  22.         }
  23.         @Override
  24.         protected String doInBackground(Integer... params) {    // 处理后台任务
  25.             for (int x = 0; x < 100; x++) {        // 进度条累加
  26.                 MyAsyncTaskDemo.this.bar.setProgress(x);    // 设置进度
  27.                 this.publishProgress(x);        // 传递每次更新的内容
  28.                 try {
  29.                     Thread.sleep(params[0]);    // 延缓执行
  30.                 } catch (InterruptedException e) {
  31.                     e.printStackTrace();
  32.                 }
  33.             }
  34.             return "执行完毕。";        // 返回执行结果        }
  35.     }}

030905_消息机制.ppt
阅读(2080) | 评论(0) | 转发(0) |
0

上一篇:ActivityGroup

下一篇:Service

给主人留下些什么吧!~~