Android—子线程更新UI问题( java.lang.RuntimeException: Can't create handler inside thread that has not cal)

来源:互联网 发布:mvc权限管理系统源码 编辑:程序博客网 时间:2024/06/10 09:14

之前在子线程中显示一个UI操作,发生错误

 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
代码为:延时3秒后发出一个Toast信息

 new Thread(){         public void run(){             try {                 Thread.sleep(2999);                               Toast.makeText(MainActivity.this, "请重新连接",Toast.LENGTH_LONG).show();             } catch (InterruptedException e) { }         }     }.start();

这里明显在子线程进行UI更新,所以发生错误

解决:在子线程中发送一个message到Handle,让Handle更新线程

代码:

线程:

 new Thread(){          public void run(){              try {                  Thread.sleep(2999);                  mHandler.sendEmptyMessage(0);              } catch (InterruptedException e) { }          }      }.start();

Handle写在onCreate()之外

Handler mHandler = new Handler() {        public void handleMessage(Message msg) {        Toast.makeText(MainActivity.this, "请重新连接",Toast.LENGTH_LONG).show();            super.handleMessage(msg);        }    };







0 0
原创粉丝点击