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

之前在子线程中显示一个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);
	        }
	    };







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值