Android 后台线程创建UI组件
2010-03-13 07:07:00 来源:WEB开发网比如在android ProgressDialog和后台线程中前台ui线程在显示ProgressDialog,后台线程在下载更新数据,那么更新数据完毕,会dismiss ProgressDialog对象,而且会再显示一个提示对话框,告知数据更新完毕。
触发的事件是下载完毕,这是后台线程知道的,但是后台线程不能直接创建ui组件,这样会产生报错,比如:
这是因为,android只能有一个系统线程来处理绘制UI,用户创建线程不能做这件事情。
那么,需要android提供的Handler类来处理,让用户线程通知UI线程执行。在android中有关线程的处理中主要说明的是后台线程和UI线程通讯的情况。下面说明,后台线程怎么告诉UI线程执行一个过程。
见代码:
confirmHandler.post(new Runnable() {
@Override
public void run() {
AlertDialog.Builder builder = new Builder(
WelComeMainActivity.this);
builder.setMessage("数据更新完毕。");
builder.setPositiveButton("确认", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
});
builder.create().show();
}
});
}
});
t.start();
}
Handler confirmHandler = new Handler(Looper.myLooper());
在Activity中有个成员变量confirmHander,在后台线程内部,向该handler post一个Runnable实例,这样UI线程会执行这个Runnable实例的run方法,而不是创建新的线程。
更新完毕将显示:
- ››Android 当修改一些代码时,使用什么编译命令可以最...
- ››Android 如何添加一个apk使模拟器和真机都编译进去...
- ››Android 修改Camera拍照的默认保存路径
- ››Android 如何修改默认输入法
- ››android开发中finish()和System.exit(0)的区别
- ››Android手势识别简单封装类
- ››android中查看项目数字证书的两种方法
- ››Android中获取IMEI码的办法
- ››android 相机报错 setParameters failed
- ››Android重启运用程序的代码
- ››Android为ListView的Item设置不同的布局
- ››android bitmap与base64字符串的互相转换
更多精彩
赞助商链接