子线程中能不能 new handler?为什么?

不能,如果在子线程中直接 new Handler()会抛出异常 java.lang.RuntimeException: Can’t create handler inside thread that has not called,在没有调用 Looper.prepare()的时候不能创建 Handler,因为在创建 Handler 的源码中做了如下操作
Handler 的构造方法中

public static Looper myLooper() {
    return sThreadLocal.get();
}

mLooper=Looper.myLooper();
if(mLooper==null){
    throw new RuntimeException(
            "Can't create handler inside thread that has not called Looper.prepare()");
}

你可能感兴趣的:(Android)