我收到ANR报告,该报告可由用户在我没有的设备上重现。但是,我发现自己的代码中没有线程问题,只有以下内容。

DALVIK THREADS (27):
"main" prio=5 tid=1 Native
| group="main" sCount=1 dsCount=0 obj=0x7682cf40 self=0xb4827800
| sysTid=29689 nice=0 cgrp=apps/bg_non_interactive sched=0/0 handle=0xb6ff4bec
| state=S schedstat=( 194686184 170352917 762 ) utm=10 stm=9 core=3 HZ=100
| stack=0xbe5fd000-0xbe5ff000 stackSize=8MB
| held mutexes=
kernel: (couldn't read /proc/self/task/29689/stack)
native: #00 pc 0003732c  /system/lib/libc.so (__epoll_pwait+20)
native: #01 pc 000121bf  /system/lib/libc.so (epoll_pwait+26)
native: #02 pc 000121cd  /system/lib/libc.so (epoll_wait+6)
native: #03 pc 00010f23  /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+98)
native: #04 pc 0001114d  /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+92)
native: #05 pc 00084d91  /system/lib/libandroid_runtime.so (_ZN7android18NativeMessageQueue8pollOnceEP7_JNIEnvi+22)
native: #06 pc 000b61e3  /system/framework/arm/boot.oat (Java_android_os_MessageQueue_nativePollOnce__JI+102)
at android.os.MessageQueue.nativePollOnce(Native method)
at android.os.MessageQueue.next(MessageQueue.java:143)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke!(Native method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

对于可能会有的任何想法,我将不胜感激。几个线程也具有相同的堆栈跟踪,但是没有任何指向我代码中的内容。

最佳答案

查阅ANR报告后,我终于发现另一个线程挂起了。我相信我发布的跟踪记录是正确的行为。取消阻止其他线程为用户解决了此问题。

关于libc.so中的Android ANR,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39068198/

10-11 22:40