直接在UI线程中开启子线程来更新TextView显示的内容,运行程序我们会发现,如下错 误:android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.翻译过来就是:只有创建这个控件的线程才能去更新该控件的内容。
所有的UI线程要去负责View的创建并且维护它,例如更新冒个TextView的显示,都必须在主线程中去做,我们不能直接在UI线程中去创建子线程,要利用消息机制:handler,如下就是handler的简单工作原理图:
既然android给我们提供了Handler机制来解决这样的问题,请看如下代码:
01
|
public class HandlerTestActivity extends Activity
{
|
03
|
private static final int UPDATE
= 0 ;
|
04
|
private Handler
handler = new Handler()
{
|
07
|
public void handleMessage(Message
msg) {
|
09
|
if (msg.what
== UPDATE) {
|
12
|
tv.setText(String.valueOf(msg.obj));
|
14
|
super .handleMessage(msg);
|
18
|
/**
Called when the activity is first created. */
|
20
|
public void onCreate(Bundle
savedInstanceState) {
|
21
|
super .onCreate(savedInstanceState);
|
22
|
setContentView(R.layout.main);
|
23
|
tv
= (TextView) findViewById(R.id.tv);
|
30
|
for ( int i
= 0 ;
i < 100 ;
i++) {
|
32
|
Message
msg = new Message();
|
38
|
handler.sendMessage(msg);
|
40
|
} catch (InterruptedException
e) {
|
我们就通过Handler机制来处理了子线程去更新UI线程控件问题,Andrid开发中要经常用到这种机制。
分享到:
相关推荐
Android 是消息驱动的,实现消息驱动有几个要素: 消息的表示: Message 消息队列: MessageQueue 消息循环,用于循环取出消息进行处理: Looper 消息处理,消息循环从消息队列中取出消息后要对消 息进行处理: ...
一个Android handler机制的Demo
Android 用handler机制联网获取图片能在实体机和虚拟机上运行,无广告,多次点击会造成主线程阻塞,出现anr;未实现联网获取图片的功能。
Android Handler机制解析
android handler 机制源码 (带部分汉语注释)
Android Handler机制实例,测试可运行,适合初学handler机制者
ps:这是关于Android Handler 机制的第一篇文章,主要来说一下Handler的用法,本文尽量归纳完全,如有缺漏,欢迎补充。 Handler的主要作用是切换线程,以及隐式的充当接口回调的作用,当子线程网络请求结束后,通过...
主要介绍了使用C++11实现Android系统的Handler机制,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
先上图,让大家好理解下handler机制:handler机制示例图上面一共出现了几种类,ActivityThread,Handler,MessageQueue,Looper,msg(Message),对这些类作简要介绍:ActivityThread:程序的启动入口,为什么要介绍...
171227-03.在Java中使用Android的Thread和Handler机制.java
博客http://blog.csdn.net/two_water/article/details/49945525里面的Demo.
主要对handler 、message机制进行了详解,如果想了解更多android相关知识,可以去我博客看看
程序功能说明:点击“开始”按钮后,文本框中的数字每隔1秒钟自动加1,当增加到100时就停止。 (Handler消息传递机制)
Android 的Handler消息传递机制.pdf 学习资料 复习资料 教学资源
android中的Handler和Callback机制.pdf
这个资源主要有三个Demo文件 是用来展示Handler的异步处理消息的 第一个Demo展示了如何启动线程和暂停线程 第二个Demo采用了Handler的消息队列机制 第三个Demo用HandlerThread的looper来构造一个handler,然后该...
主要介绍了Android中Handler消息传递机制 的相关资料,需要的朋友可以参考下
android handler机制问题
Android Handler 异步消息机制的例子,详细讲解请看http://bbs.droidstouch.com/thread-70-1-1.html
手写一套Java的Handler程序,深入理解Android消息机制