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