java.lang.RuntimeException: Handler (android.os.Handler) sending message to a Handler on a dead thre
Posted 胡育诚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java.lang.RuntimeException: Handler (android.os.Handler) sending message to a Handler on a dead thre相关的知识,希望对你有一定的参考价值。
1 问题描述
app内部切换Activity或者Fragment都会出现
java.lang.RuntimeException: Handler (android.os.Handler) sending message to a Handler on a dead thread
2 问题分析
google找到类似问题,基本都是以下情况:
但是在app中并没有使用在线程中使用Toast的情况,并且我的情况是只要Activity跳转,Fragment跳转都会出现
java.lang.RuntimeException: Handler (android.os.Handler) sending message to a Handler on a dead thread
所以初步推测和具体的Activity无关,和BaseActivity有关
BaseActivity中运行到onPuase就会出现这个WARNING,跟踪日志进入QueueMessage,找到抛异常的地方,但是
无果
验证和BaseActivity有没有关系,创建一个继承自原生Activity的类TestActivity,分别跳转到继承BaseActivity的类和继承
Activity的类,都会在onPause出现
java.lang.RuntimeException: Handler (android.os.Handler) sending message to a Handler on a dead thread
初步推测与BaseActivity无关
猜测是否与Application相关,可能是导入的第三方框架导致相关问题
最终利用控制变量法发现在Application中注释IntentService,问题消失,所以查看IntentService
IntentService中控制变量法找到原因
在IntentService的onHandleIntent方法中调用了第三方AppsFlyerLib.getInstance().startTracking(MyApplication.getInstance(), Constants.APPSFLYER_ID);
onHandleIntent在线程中执行,AppsFlyerLib只能在主线程初始化
AppsFlyerLib移出IntentService,放在Application的onCreate方法中初始化即可
以上是关于java.lang.RuntimeException: Handler (android.os.Handler) sending message to a Handler on a dead thre的主要内容,如果未能解决你的问题,请参考以下文章