您可以帮助我解决此ANR问题吗?用户向Google Play控制台报告了很多次,但我自己无法复制。非常感谢。
"main" prio=5 tid=1 Native | group="main" sCount=1 dsCount=0 obj=0x73898658 self=0xb0204400 | sysTid=3708 nice=-4 cgrp=default sched=0/0 handle=0xb2f69534 | state=S schedstat=( 5873509009 1942619080 10289 ) utm=484 stm=102 core=3 HZ=100 | stack=0xbe00c000-0xbe00e000 stackSize=8MB | held mutexes= #00 pc 00000000000174d4 /system/lib/libc.so (syscall+28) #01 pc 0000000000046a5d /system/lib/libc.so (_ZL24__pthread_cond_timedwaitP23pthread_cond_internal_tP15pthread_mutex_tbPK8timespec+102) #02 pc 0000000000039bb1 /data/app/com.android.chrome-1/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:872) at android.view.Choreographer.doCallbacks (Choreographer.java:686) at android.view.Choreographer.doFrame (Choreographer.java:618) at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:860) at android.os.Handler.handleCallback (Handler.java:751) at android.os.Handler.dispatchMessage (Handler.java:95) at android.os.Looper.loop (Looper.java:154) at android.app.ActivityThread.main (ActivityThread.java:6165) at java.lang.reflect.Method.invoke! (Native method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:888) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:778)
答案 0 :(得分:6)
“ ANR”代表“应用程序无响应”。这意味着您的应用已为用户锁定。通常有两种原因之一:
在这种情况下,我们看到堆栈跟踪的顶部位于“ org.chromium.ui.base.WindowAndroid.nativeOnVSync”中。知道“铬”是为Google Chrome提供支持的开源项目,这很有帮助。这意味着您可以查看源代码。
在github上搜索“ nativeOnVysnc”发现java source code
基本上,某些Chrome渲染代码中似乎锁定了某些内容。 了解这一点有助于了解Chromium用于Webkit,该Webkit用于在Android应用程序中呈现Webview窗口。因此,您的应用程序中可能会有某种形式的Web视图,该Web视图行为不当,但我无法为您提供帮助。我会检查Web视图中的javascript内存使用情况或其他危险行为,或者在C ++本机代码的Chromium存储库中查看,以更好地了解正在发生的事情。
答案 1 :(得分:1)
您可以做的事很少:
答案 2 :(得分:1)
我有同样的问题。但是我可以减少有关此问题的ANR。
以前的Chrome版本存在一个错误,该错误有时不会发布VSync侦听器。 但是,在最新版本的铬上,似乎已修复了该错误。
https://bugs.chromium.org/p/chromium/issues/detail?id=900557
如果您的项目有AdMob原生广告,则可能是原因。
看来UnifiedNativeAdView
在内部使用VSync,如果您不调用destroy()
,我认为VSync侦听器仍然存在并泄漏。
答案 3 :(得分:0)
一周前我遇到了同样的问题。我在任何地方都找不到答案。对我来说,ANR分析尚不清楚。结果,这是我的错-在onResume()中,我使用recreate()if(camera == null)。测试一切正常后,在首次安装后,将请求获得摄像机许可,然后将活动重新启动到无穷大。编辑代码后,此错误减少到几乎为零。您必须在代码中搜索错误。