Android更新UI的两种方法
2015-11-12 00:13
423 查看
在Android中,只有UI线程(主线程)可以对UI进行更新操作,其他线程对UI操作会导致android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views。
第一种:在Activity线程中创建Handler实例,通过Handler的handleMessage(Message)方法,接受其他线程的消息,进行UI更新。
其他线程通过Handler的sendMessage(Message)方法,把更新消息发送到UI线程的Handler,通知UI更新。
第二种:利用Activity.runOnUiThread(Runnable)把更新UI的代码创建在Runnable中,然后在需要更新UI时,把这个Runnable对象传给Activity.runOnUiThread(Runnable)。
这样Runnable对像就能在UI程序中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI 线程。
runOnUiThread的实现代码:
public final void runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
}
第一种:在Activity线程中创建Handler实例,通过Handler的handleMessage(Message)方法,接受其他线程的消息,进行UI更新。
其他线程通过Handler的sendMessage(Message)方法,把更新消息发送到UI线程的Handler,通知UI更新。
第二种:利用Activity.runOnUiThread(Runnable)把更新UI的代码创建在Runnable中,然后在需要更新UI时,把这个Runnable对象传给Activity.runOnUiThread(Runnable)。
这样Runnable对像就能在UI程序中被调用。如果当前线程是UI线程,那么行动是立即执行。如果当前线程不是UI线程,操作是发布到事件队列的UI 线程。
runOnUiThread的实现代码:
public final void runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
}
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories