在Android 1.5之后专门提供了一个android.os.AsyncTask(直译为非同步任务)类,通过此类完成非阻塞的操作类,其功能与Handler类似,可以在后台进行操作之后更新主线程的UI,但其使用的方式要比Handler容易许多。
-
public class MyAsyncTaskDemo extends Activity {
-
private ProgressBar bar = null; // 进度条组件
-
private TextView info = null; // 文本显示组件
-
@Override
-
public void onCreate(Bundle savedInstanceState) {
-
super.onCreate(savedInstanceState);
-
super.setContentView(R.layout.main); // 调用布局管理器
-
this.bar = (ProgressBar) super.findViewById(R.id.bar); // 取得组件
-
this.info = (TextView) super.findViewById(R.id.info); // 取得组件
-
ChildUpdate child = new ChildUpdate() ; // 子任务对象
-
child.execute(100) ; // 为休眠时间
-
}
-
private class ChildUpdate extends AsyncTask<Integer, Integer, String> {
-
@Override
-
protected void onPostExecute(String result) { // 任务执行完后执行
-
MyAsyncTaskDemo.this.info.setText(result) ; // 设置文本
-
}
-
@Override
-
protected void onProgressUpdate(Integer... progress) { // 每次更新之后的数值
-
MyAsyncTaskDemo.this.info.setText("当前进度是:"
-
+ String.valueOf(progress[0]));// 更新文本信息
-
}
-
@Override
-
protected String doInBackground(Integer... params) { // 处理后台任务
-
for (int x = 0; x < 100; x++) { // 进度条累加
-
MyAsyncTaskDemo.this.bar.setProgress(x); // 设置进度
-
this.publishProgress(x); // 传递每次更新的内容
-
try {
-
Thread.sleep(params[0]); // 延缓执行
-
} catch (InterruptedException e) {
-
e.printStackTrace();
-
}
-
}
-
return "执行完毕。"; // 返回执行结果 }
-
}}
030905_消息机制.ppt
阅读(2121) | 评论(0) | 转发(0) |