Android:ANR 输入调度超时

Posted

技术标签:

【中文标题】Android:ANR 输入调度超时【英文标题】:Android: ANR Input dispatching timed out 【发布时间】:2017-04-15 23:21:53 【问题描述】:

我在某些手机上收到以下错误日志:

原因:输入调度超时(等待发送非键事件,因为触摸的窗口尚未完成对 500.0 毫秒前交付给它的某些输入事件的处理。等待队列长度:20。等待队列头年龄:5509.1女士)

我正在使用 Retrofit 2 进行网络调用,其中我使用异步方法,使用数据库作为领域,我使用异步事务来编写内容。 使用 Glide 加载图片。

在使用严格模式时,我发现我得到了共享偏好的惩罚日志,没有别的。查看和调试问题的任何其他指针

【问题讨论】:

【参考方案1】:

main thread 中不应执行任何类型的耗时过程,例如通过网络同步数据。 android 有一些默认的内置方法,如 AsyncTaskIntentService 等。这些在 worker thread 上。就我个人而言,我对 Retrofit 2 不太了解。如果它适用于 main thread,那么你应该在单独的线程中使用它。

【讨论】:

根据文档改造 2 enqueue 方法在异步中工作。 @jitenshah 是的,我能够解决它。实际上,我正在执行我在主线程上编写的数据库操作,这很重将它移到异步任务中,它就像一个魅力。在android中使用领域作为数据库 对我来说是 gms 模块。

以上是关于Android:ANR 输入调度超时的主要内容,如果未能解决你的问题,请参考以下文章

Android 4.4 上的 ANR 输入调度超时

com.android.inputmethod.latin 中的 ANR 原因:输入调度超时

输入调度超时 ANR

ANR 输入调度超时

Android ANR 机制

Android 进阶——Framework 核心ANR( Applicatipon No Response)机制设计思想详解