为什么在子线程中创建handler时会报以下错误
Can’t create handler inside thread that has not called Looper.prepare()
因为Android系统默认情况下:非主线程中没有开启Looper,而Handler对象必须绑定Looper对象。
第二个子线程中注意要加上 Looper.prepare(); Looper.loop();
ex:
private Thread notifyingThread; private Thread secondThread; private TextView tv_show; //创建第一个子线程 notifyingThread = new Thread(null, mTask, "子线程1"); notifyingThread.start(); private Runnable mTask = new Runnable() { public void run() { //第二个子线程 secondThread = new Thread(null,secondRunable,"子线程2"); secondThread.start(); } }; private Runnable secondRunable = new Runnable() { @Override public void run() { Looper.prepare(); Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch(msg.what){ case 1: mHandler.sendEmptyMessage(0); break; } } }; handler.sendEmptyMessageDelayed(1,2000); Looper.loop(); } }; //更新视图的handler Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0: tv_show.setText("dsfasdf"); break; default: break; } } };