如何解决java.lang.RuntimeException: Can’t create handler inside thread that has not called Looper.prepare().
在很多时候,我们需要去实现一个自己的Handler对象,然后去异步有序地处理一些逻辑。如下所示:
private class MyHandler extends Handler {
public MyHandler (Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
switch (msg.waht) {
case xx1:
...
break;
case xx2:
...
break;
...
}
但是,仅仅定义了新的Handler对象还是不够的,我们还需要给它分配一个Looper, 不然运行会报异常:
java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
这里只介绍解决办法,Handler消息处理机制的原理我会在另一篇文章中详细介绍:
private static final String TAG = "MyTag";
private HandlerThread myHandlerThread = new HandlerThread(TAG);
myHandlerThread.start();
private MyHandler mMyHandler = new MyHandler(myHandlerThread.getLooper());
经测试验证,方法有效。