题外话
各位友友们,每次出异常之后不要直接问同事直接去百度,要养成一个良好的习惯,先去自己分析,出这个异常的原因是什么,对照着代码,看打印的日志也好debug一步一步走也好,找到出异常的代码块,分析为什么会出异常,然后自己再进行调试,只有自己动脑思考了,才会成长才能有所收获。
首先查看报错信息
Only one Looper may be created per thread:每个线程只能创建一个Looper
TTToast.java:10:错误发生在TTToast.java的第10行,咱们点过去查看 方法解释: Looper.prepare():为当前线程提供一个Looper的实例 TToast.show(context, msg):展示消息 Looper.loop():在线程中执行消息队列,让 Looper 开始工作,从消息队列里取消息,处理消息
分析
每个线程只能创建一个Looper,说明其他地方已经调用了show这个方法,在线程中已经创建了Looper,不能再执行Looper.prepare()这个方法了
解决方法
判断当前线程是否创建了Looper,如果未创建则执行Looper.prepare() 如果已创建,直接执行后续操作即可