谷歌播放控制台中的 ANR(应用程序无响应)崩溃,我不明白
Posted
技术标签:
【中文标题】谷歌播放控制台中的 ANR(应用程序无响应)崩溃,我不明白【英文标题】:ANR (Application not responding) crash in google play console which I don't understand 【发布时间】:2018-10-20 11:15:56 【问题描述】:两周前,我在Google Play Store
上的游戏(使用Unity
制作)开始报告如此多的崩溃,我不知道可能是什么问题。
"main" tid=1 Native "main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 flags=1 obj=0x73960618 self=0xecf6f000
| sysTid=28247 nice=-4 cgrp=default sched=0/0 handle=0xf1a014bc
| state=S schedstat=( 2314581326 753030573 4325 ) utm=164 stm=66 core=1 HZ=100
| stack=0xff11e000-0xff120000 stackSize=8MB
| held mutexes=
#00 pc 0000000000018e9c /system/lib/libc.so (syscall+28)
#01 pc 000000000004850d /system/lib/libc.so (_ZL24__pthread_cond_timedwaitP23pthread_cond_internal_tP15pthread_mutex_tbPK8timespec+102)
#02 pc 0000000000039bb1 /data/app/com.android.chrome-Oy13PXODRGoydMIrhaZcSQ==/base.apk (???)
at org.chromium.ui.base.WindowAndroid.nativeOnVSync (Native method)
at org.chromium.ui.base.WindowAndroid.access$700 (WindowAndroid.java:134)
at org.chromium.ui.base.WindowAndroid$1.onVSync$5166USJ75THMGSJFDLKNAR9FELKIULIJF5N66JBFDPKN8RRI7D52ILG_0 (WindowAndroid.java:16)
at org.chromium.ui.VSyncMonitor$1.doFrame (VSyncMonitor.java:22)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:909)
at android.view.Choreographer.doCallbacks (Choreographer.java:723)
at android.view.Choreographer.doFrame (Choreographer.java:655)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:897)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6938)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)
【问题讨论】:
【参考方案1】:在以下情况下显示 ANR:
在 5 秒内没有响应输入事件(例如按键或屏幕触摸事件)。 BroadcastReceiver 未在 10 秒内完成执行。
检查您的所有 BroadcastReceiver、Serviced 和活动,以查看您是否在主线程上运行较长的进程并超过阈值。请注意,BroadcastReceiver 在主线程中执行代码。
如果您在代码中的任何位置使用Thread.sleep()
,您也可以进行搜索。您可以找到更多信息here
【讨论】:
感谢您解释它 Sagar。在我将 Facebook 事件集成到应用程序/游戏中后,这也开始发生。这是集成的依赖“com.facebook.android:facebook-android-sdk:4.30.0” 当一个事件被触发时,检查你是否正在执行长进程。 不,这是不对的。如果主线程被外部库的调用栈占用,那是该库的错。如果您的应用程序代码和库代码之间有一个共享同步点(互斥量/信号量),并且您的一方会错误地保持该点未发布,那么这不可能是您的错的唯一方法。这是不太可能的,因为库代码几乎是分开的,因此我得出结论,库已自行将自己置于长时间等待状态。以上是关于谷歌播放控制台中的 ANR(应用程序无响应)崩溃,我不明白的主要内容,如果未能解决你的问题,请参考以下文章
IntentService 中的数据库操作导致应用程序停止,变得无响应并给出 ANR