主线程与子线程
程序员文章站
2022-07-01 15:14:27
主线程和子线程相关①java.lang.RuntimeException: Can’t create handler inside thread that has not called Looper.prepare()今天遇到这个问题:刚开始在主线程时调用了classA中的方法a(a内无任何操作),然后往下执行,在子线程中调用了classA中的方法b,方法b中new了一个handler,这个时候运行是正常的。再往后,把前面调用方法a的地方去掉了,再运行,就出现了这个异常。方法a和方法b是没有联系的。但是...
主线程和子线程相关
学习心得,做个小结,供自己复习
①java.lang.RuntimeException: Can’t create handler inside thread that has not called Looper.prepare()
今天遇到这个问题:刚开始在主线程时调用了classA中的方法a(a内无任何操作),然后往下执行,在子线程中调用了classA中的方法b,方法b中new了一个handler,这个时候运行是正常的。再往后,把前面调用方法a的地方去掉了,再运行,就出现了这个异常。方法a和方法b是没有联系的。但是为什么会出现这个异常,还是在老师父的解释和看了网上的一些文章后,才对主线程和子线程有了一些理解。
出现这个问题后,我最先想到的是子线程不能更新UI,但是这里只是发了一个消息呀,而且为什么调用了空的方法a之后就没有异常了?原来问题的原因是,刚开始主线程调用了方法a,所以classA在主线程中初始化了,那么消息队列Looper也就在主线程中初始化了;而没有调用方法a的话,这个Looper就初始化在了子线程,就出现了如上①的错误。
本文地址:https://blog.csdn.net/weixin_42142032/article/details/106916531