问题描述
我们正面临 ANR,该 ANR 没有关于应用程序中发生的事情的信息,但发生在 8% 的设备上,很多。它可能在更新一些库后开始发生,例如
- 广告网络库(使用 Admob 进行 applovin 中介),
- Appcompat 库(从 1.2.0 到 1.3.0,特别是
androidx.appcompat:appcompat:1.3.0
), - 材料设计库,
- Recyclerview(androidx,从 1.2.0 到 1.2.1)
等等...
这是 ANR 报告:
"main" prio=5 tid=1 Blocked
at android.os.Handler.handleCallback (Handler.java:938)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:246)
at android.app.ActivityThread.main (ActivityThread.java:8506)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:602)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1139)
就是这样。数以千计的报告,只显示这一点。没有其他回调或跟踪。
由于缺少此堆栈跟踪(我很确定这不是应用卡住的实际位置),我们集成了一个名为 Embrace (after some research I've found this link) 的 SDK ,认为我们可以在此报告实际发生之前推断出发生了什么。但是,SDK 并没有像 Google 报告的那样报告任何内容,我们只能看到有关 Webview 初始化的报告。但是,这些也存在于以前的版本中,应该不会造成任何后果。
该应用有一个几乎永远运行的前台服务,在没有像这样的 ANR 和有像这样的 ANR 的版本之间,只有代码上的细微差别不应该阻塞这么多。其中大部分已经恢复,但 ANR 仍然存在。
最后一个堆栈上的处理程序代码指向这个:
private static void handleCallback(Message message) {
message.callback.run();
}
我看不到任何会阻塞此特定线路上的主线程的任何内容,例如任何同步或其他内容,但是,几乎有 10k 报告称设备在此特定线路上受到影响。主要影响 Android 10 和 11,但我们也有来自较低 Android 版本的报告,目前可以忽略。
可能是什么原因造成的?任何帮助将不胜感激,谢谢。
如果您需要任何其他信息,请告诉我。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)