【问题标题】:What am I supposed to look at Android ANRs?我应该看什么 Android ANR?
【发布时间】:2019-10-10 03:43:45
【问题描述】:

我有一个 React Native 应用程序,有时它会崩溃,让我可以选择发送反馈。当我从 Google Play 控制台访问 ANR 和崩溃时,我得到了一堆日志,但我不确定这意味着什么。

在简历中,主题是

"main" tid=1 Native
"Jit thread pool worker thread 0" tid=2 Native
"ReferenceQueueDaemon" tid=4 Waiting
"FinalizerDaemon" tid=5 Waiting
"FinalizerWatchdogDaemon" tid=6 Waiting
"Binder:24455_1" tid=8 Native
"Binder:24455_2" tid=9 Native
"Profile Saver" tid=10 Native
"queued-work-looper" tid=11 Native
"Queue" tid=13 Waiting
"Queue" tid=14 Waiting
"Queue" tid=15 Waiting
"Queue" tid=16 Waiting
"Queue" tid=17 Waiting
"Queue" tid=18 Waiting
"Queue" tid=19 Waiting
"Queue" tid=20 Waiting
"Queue" tid=21 Waiting
"Crashlytics Exception Handler1" tid=22 Waiting
"Answers Events Handler1" tid=23 Waiting
"OkHttp ConnectionPool" tid=26 TimedWaiting
"RenderThread" tid=28 Native
"HybridData DestructorThread" tid=29 Waiting
"Binder:24455_3" tid=30 Native
"mqt_js" tid=31 Native
"mqt_native_modules" tid=32 Native
"OSH_WritePrefs" tid=33 Native
"Signal Catcher" tid=3 Runnable
"HeapTaskDaemon" tid=7 Blocked 

我不会给出所有的日志,因为它太多了。但是第一个"main" tid=1 Native 有:

"main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 flags=1 obj=0x73e2a870 self=0x796e8c0a00
| sysTid=24455 nice=-10 cgrp=default sched=0/0 handle=0x797309b9b0
| state=S schedstat=( 62495905795 17738489601 195362 ) utm=5213 stm=1036 core=4 HZ=100
| stack=0x7fcb7ee000-0x7fcb7f0000 stackSize=8MB
| held mutexes=
#00  pc 000000000001dd6c  /system/lib64/libc.so (syscall+28)
#01  pc 0000000000065d44  /system/lib64/libc.so (pthread_cond_wait+96)
#02  pc 0000000001da88dc  /data/app/com.android.chrome-YPgu5fbzu8Na_XBkB4z-ag==/base.apk (???)
at org.chromium.ui.base.WindowAndroid.nativeOnVSync (Native method)
at org.chromium.ui.base.WindowAndroid.a (PG:220)
at cKD.a (PG:16)
at cKm.doFrame (PG:24)
at android.view.Choreographer$CallbackRecord.run (Choreographer.java:964)
at android.view.Choreographer.doCallbacks (Choreographer.java:778)
at android.view.Choreographer.doFrame (Choreographer.java:710)
at android.view.Choreographer$FrameDisplayEventReceiver.run (Choreographer.java:952)
at android.os.Handler.handleCallback (Handler.java:789)
at android.os.Handler.dispatchMessage (Handler.java:98)
at android.os.Looper.loop (Looper.java:169)
at android.app.ActivityThread.main (ActivityThread.java:6595)
at java.lang.reflect.Method.invoke (Native method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:240)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:767)

那么,这个或上面的任何其他主题是否有任何有价值的信息?

【问题讨论】:

  • 您在使用 AdMob 广告吗?我们的应用程序中有这个,我认为渲染缓慢是由正在显示的广告引起的。这些显示在 WebView 中。

标签: android react-native google-play-console


【解决方案1】:

这些“主题”是线程列表和这些线程上的堆栈跟踪。所以第一个列表显示你有线程:

  • 一个主线程(用于渲染 UI)
  • 一些队列
  • 一些用于垃圾收集对象的终结器

等等

您引用的第二部分是堆栈跟踪。这显示了线程在做什么,在这种情况下是主线程。 ANR(应用程序无响应)通常是由主线程上运行缓慢的东西引起的,所以这很有用。

从这里可以看出代码在org.chromium.ui.base.WindowAndroid.nativeOnVSync (Native method)。所以这表明你在 react 中创建的东西在 WebView 中渲染速度非常慢。

【讨论】:

    猜你喜欢
    • 2010-12-09
    • 1970-01-01
    • 2011-02-12
    • 2018-11-01
    • 2016-07-19
    • 2015-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多