Los errores de aplicación que no responde (ANR) se activan cuando el hilo de la interfaz de usuario de la aplicación no responde durante más de
Además, Crashlytics puede ayudar a identificar temas problemáticos específicos. Analizamos los ANR y luego, en el panel de Crashlytics , etiquetamos los subprocesos aplicables para proporcionar sugerencias sobre cómo depurar el ANR.
Las siguientes secciones de esta página explican lo que significa cada etiqueta ANR, muestran un ANR de ejemplo con esa etiqueta y proporcionan una solución recomendada para depurar la ANR.
Triggered ANR
Un hilo que estuvo bloqueado durante demasiado tiempo y activó el ANR se anota con estoTriggered ANR
.
Triggered ANR
puede o no ser la causa real de la ANR. Para proporcionar información para depurar y corregir estos ANR, Crashlytics también etiqueta cualquier otro subproceso que esté involucrado en el ANR. En las siguientes secciones de esta página, obtendrá información sobre las otras etiquetas que se podrían aplicar a un hilo.
Deadlocked
Deadlocked
Deadlocked
.
Ver ejemplo
main (unknown): tid=1 systid=1568
com.android.server.pm.PackageManagerService$PackageManagerInternalImpl.getPackage(PackageManagerService.java:22701)
com.android.server.pm.PackageManagerService$PackageManagerInternalImpl.filterOnlySystemPackages(PackageManagerService.java:22787)
...
com.android.server.SystemServer.main(SystemServer.java:368)
java.lang.reflect.Method.invoke(Native method)
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:517)
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:934)
ActivityManager (unknown): tid=21 systid=1902
com.android.server.pm.PackageManagerService.getPackageSetting(PackageManagerService.java:23618)
com.android.server.pm.PackageManagerService.getPackageUid(PackageManagerService.java:4542)
...
android.os.Handler.handleCallback(Handler.java:907)
android.os.Handler.dispatchMessage(Handler.java:99)
android.os.Looper.loop(Looper.java:216)
android.os.HandlerThread.run(HandlerThread.java:67)
com.android.server.ServiceThread.run(ServiceThread.java:44)
Recomendación
IO Root blocking
IO Root blocking
Triggered ANR
está anotado con elIO Root blocking
. Si elTriggered ANR
no está bloqueado por otros hilos, entonces elIO Root blocking
también es unRoot blocking
.
Ver ejemplos
Thread main(THREAD_STATE_TIMED_WAITING)
sun.misc.Unsafe.park( Unsafe.java:0 )
java.util.concurrent.locks.LockSupport.parkNanos( LockSupport.java:230 )
android.database.sqlite.SQLiteConnectionPool.waitForConnection( SQLiteConnectionPool.java:756 )
...
android.app.ActivityThread.main( ActivityThread.java:8192 )
Thread main(THREAD_STATE_NATIVE_WAITING)
Syscall
art::ConditionVariable::WaitHoldingLocks(art::Thread*)
art::GoToRunnable(art::Thread*)
art::JniMethodEnd(unsigned int, art::Thread*)
libcore.io.Linux.fdatasync( Linux.java:0 )
libcore.io.ForwardingOs.fdatasync( ForwardingOs.java:105 )
...
java.io.RandomAccessFile.write( RandomAccessFile.java:559 )
...
android.app.ActivityThread.main( ActivityThread.java:8192 )
Recomendación
IO Root blocking
, también puede utilizar el modo estricto para identificar cualquier operación de E/S no intencionada que esté sucediendo en el subproceso principal.
Root blocking
Root blocking
Triggered ANR
está anotado con elRoot blocking
. Si un hilo está etiquetado como ambosRoot blocking
yTriggered ANR
, entonces no hay otros subprocesos que bloqueen ese subproceso.
Triggered ANR
estaban esperando (tal vez transitivamente) otros subprocesos, estánRoot blocking
. Podría haber varias razones por las cuales un hilo es la causa raíz del ANR.
Ver ejemplos
Thread main(THREAD_STATE_RUNNABLE)
android.os.Parcel.createTypedArray( Parcel.java:3086 )
android.content.pm.PackageInfo.<init>( PackageInfo.java:546 )
...
android.app.ActivityThread$H.handleMessage( ActivityThread.java:2166 )
android.os.Handler.dispatchMessage( Handler.java:106 )
android.os.Looper.loop( Looper.java:246 )
android.app.ActivityThread.main( ActivityThread.java:8633 )
Thread main(THREAD_STATE_BLOCKED)
DBHelper.runOnDB( DBHelper.java:97 )
DBHelper.runDb( DBHelper.java:125 )
...
java.lang.reflect.Method.invoke( Method.java:0 )
EventBus.invokeSubscriber( EventBus.java:510 )
postToSubscription( EventBus.java:437 )
...
android.os.Handler.handleCallback( Handler.java:938 )
android.os.Handler.dispatchMessage( Handler.java:99 )
android.os.Looper.loop( Looper.java:268 )
android.app.ActivityThread.main( ActivityThread.java:7904 )
Recomendación
Unknown root cause
Unknown root cause
Unknown root cause
si fue el hilo que desencadenó el ANR pero estaba inactivo en el proceso cuando ocurrió el ANR. Crashlytics no tiene suficiente información para determinar la causa raíz. No hay ninguna razón evidente por la que se haya producido esta ANR.
Ver ejemplo
Thread main(THREAD_STATE_NATIVE_WAITING) __epoll_pwait
android::Looper::pollInner(int)
android::Looper::pollOnce(int, int*, int*, void**)
android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)
android.os.MessageQueue.nativePollOnce( MessageQueue.java:0 )
android.os.MessageQueue.next( MessageQueue.java:335 )
android.os.Looper.loop( Looper.java:193 )
android.app.ActivityThread.main( ActivityThread.java:8019 )