在子线程中创建Handler时会抛出RuntimeException异常,提示Can’t create handler inside thread …,这是由于在Handler构造时没有找到当前线程的Looper导致的
mLooper = Looper.myLooper();
if (mLooper == null) {
throw new RuntimeException(
"Can't create handler inside thread " + Thread.currentThread()
+ " that has not called Looper.prepare()");
}
如果要在子线程中使用Handler,需要先创建当前线程的Looper,然后在创建Handler,为了使Handler能正常接收消息,还需要调用Looper.loop()去处理消息,注意在调用Looper.loop()之后线程会进入死循环,需要在适当的时候调用Looper.myLooper().quitSafely()退出消息循环来释放线程。
Looper.prepare();
Handler handler = new Handler();
Looper.loop();