pouvez-vous m'aider avec ce problème d'ANR? Les utilisateurs signalent de nombreuses fois à la console Google Play, mais je ne peux pas le reproduire moi-même. Merci beaucoup.
"main" prio = 5 tid = 1 Native | group = "main" sCount = 1 dsCount = 0 obj = 0x73898658 self = 0xb0204400 | sysTid = 3708 Nice = -4 cgrp = défaut sched = 0/0 handle = 0xb2f69534 .__ | state = S schedstat = (5873509009 1942619080 10289) utm = 484 stm = 102 core = 3 HZ = 100 | stack = 0xbe00c000-0xbe00e000 stackSize = 8MB | mutex tenus = # 00 pc 00000000000174d4 /system/lib/libc.so (appel système + 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 (???) à org.chromium.ui.base.WindowAndroid.nativeOnVSync (méthode native) à org.chromium.ui.base.WindowAndroid.access 700 $ (WindowAndroid.Java:134) à org.chromium.ui.base.WindowAndroid $ 1.onVSync $ 5166USJ75THMGSJFDLKNAR9FELKIULIJF5N66JBFDPKN8RRI7D52ILG_0 (WindowAndroid.Java:16) à org.chromium.ui.VSyncMonitor $ 1.doFrame (VSyncMonitor.Java:22) sur Android.view.Choreographer $ CallbackRecord.run (Choreographer.Java:872) sur Android.view.Choreographer.doCallbacks (Choreographer.Java:686) sur Android.view.Choreographer.doFrame (Choreographer.Java:618) sur Android.view.Choreographer $ FrameDisplayEventReceiver.run (Choreographer.Java:860) sur Android.os.Handler.handleCallback (Handler.Java:751) sur Android.os.Handler.dispatchMessage (Handler.Java:95) sur Android.os.Looper.loop (Looper.Java:154) sur Android.app.ActivityThread.main (ActivityThread.Java:6165) à Java.lang.reflect.Method.invoke! (Méthode native) sur com.Android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.Java:888) à com.Android.internal.os.ZygoteInit.main (ZygoteInit.Java:778)
"ANR" signifie "Application ne répond pas". Cela signifie que votre application est verrouillée pour l'utilisateur. Il y a généralement une des deux causes:
Dans ce cas, nous voyons que le haut de la trace de la pile se trouve dans "org.chromium.ui.base.WindowAndroid.nativeOnVSync". Il est utile de savoir que "chrome" est le projet open source qui alimente Google Chrome, entre autres choses. Cela signifie que vous pouvez aller voir le code source.
Googling "nativeOnVysnc" sur github trouve le code source Java
Fondamentalement, il semble que quelque chose se bloque dans un code de rendu Chrome ..__ Il est utile de savoir à ce stade que Chromium est utilisé pour Webkit, qui est utilisé pour le rendu des fenêtres de vue Web dans les applications Android. Il y a donc des chances que vous ayez une sorte de WebView dans votre application qui se comporte mal pour le rendu, mais je ne peux pas vous aider au-delà. Je vérifiais le javascript de mes vues Web pour voir si de la mémoire était utilisée ou tout autre comportement à risque, ou examinais dans le référentiel Chromium le code C++ natif pour essayer de mieux comprendre ce qui se passait.
Il y a peu de choses que vous puissiez faire:
J'ai eu le même problème. Mais je pourrais tellement diminuer le nombre d'ANR concernant ce problème.
La version précédente de Chrome comportait un bogue qui ne permettait parfois pas d’écouter les auditeurs VSync . Toutefois, dans la dernière version de chrome, il semble que ce bogue ait été corrigé.
https://bugs.chromium.org/p/chromium/issues/detail?id=900557
Si votre projet contient des annonces natives AdMob, cela peut être une cause. Il semble que UnifiedNativeAdView
utilise VSync en interne, si vous n'appelez pas destroy()
, VSync listener reste et fuit, je pense.
J'ai eu le même problème il y a une semaine. Je n'ai pu trouver de réponse nulle part. L'analyse ANR pour moi n'était pas claire. En conséquence, il s’est avéré que c’est de ma faute - dans onResume () j’ai utilisé recreate () if (camera == null). Lors des tests, tout s'est bien passé et, après la première installation, une demande d'autorisation d'accès à la caméra a été lancée et l'activité a été relancée à l'infini. Après avoir modifié le code, cette erreur a été réduite à presque zéro. Vous devez rechercher une erreur dans votre code.