android - quitar - pantalla negra celular samsung
Android ActivityThread.reportSizeConfigurations hace que la aplicaciĆ³n se bloquee con la pantalla negra y luego se bloquee (2)
Tengo un bloqueo en mi aplicación. Sucede para muchos usuarios y sus múltiples lugares en el método ActivityThread.java reportSizeConfigurations. No sé para qué se usa esto y por qué se congela.
La congelación ocurre justo después de la pantalla de inicio (cuando se inicia la actividad principal) y solo ocurre en la actualización de la aplicación. Si reinstala la aplicación el problema desaparece. El problema es que no puedo decirle a todos los usuarios que reinstalen la aplicación ...
¿Alguien sabe qué podría causar esto y por qué? Parece que quizás esté conectado con algún manejo de DB, pero eso es solo una conjetura.
Aquí está el seguimiento de pila de Crashlytics:
Fatal Exception: java.lang.IllegalArgumentException: reportSizeConfigurations: ActivityRecord not found for: Token{a28a055 null}
at android.os.Parcel.readException(Parcel.java:1697)
at android.os.Parcel.readException(Parcel.java:1646)
at android.app.ActivityManagerProxy.reportSizeConfigurations(ActivityManagerNative.java:8342)
at android.app.ActivityThread.reportSizeConfigurations(ActivityThread.java:3049)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2992)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1631)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6682)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)
Aquí está el seguimiento de pila de la tienda de juegos ''ANRs & crash'':
"main" prio=5 tid=1 TimedWaiting
| group="main" sCount=1 dsCount=0 obj=0x74864f70 self=0x7f8b896a00
| sysTid=28578 nice=0 cgrp=default sched=0/0 handle=0x7f8f832a98
| state=S schedstat=( 237746089 66838748 1069 ) utm=18 stm=5 core=6 HZ=100
| stack=0x7fcdbf9000-0x7fcdbfb000 stackSize=8MB
| held mutexes=
at java.lang.Object.wait! (Native method)
- waiting on <0x0c54fb7b> (a java.lang.Object)
at java.lang.Thread.parkFor$ (Thread.java:2127)
- locked <0x0c54fb7b> (a java.lang.Object)
at sun.misc.Unsafe.park (Unsafe.java:325)
at java.util.concurrent.locks.LockSupport.parkNanos (LockSupport.java:201)
at android.database.sqlite.SQLiteConnectionPool.waitForConnection (SQLiteConnectionPool.java:670)
at android.database.sqlite.SQLiteConnectionPool.acquireConnection (SQLiteConnectionPool.java:348)
at android.database.sqlite.SQLiteSession.acquireConnection (SQLiteSession.java:894)
at android.database.sqlite.SQLiteSession.prepare (SQLiteSession.java:586)
at android.database.sqlite.SQLiteProgram.<init> (SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init> (SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query (SQLiteDirectCursorDriver.java:44)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory (SQLiteDatabase.java:1318)
at android.database.sqlite.SQLiteQueryBuilder.query (SQLiteQueryBuilder.java:399)
at android.database.sqlite.SQLiteQueryBuilder.query (SQLiteQueryBuilder.java:294)
at com.norwegian.travelassistant.managers.storagemanager.StorageManager.query (StorageManager.java:1011)
at com.norwegian.travelassistant.managers.storagemanager.StorageManager.a (StorageManager.java:1218)
- locked <0x00f0bd98> (a java.lang.Object)
at com.norwegian.travelassistant.managers.storagemanager.StorageManager.a (StorageManager.java:1205)
at com.norwegian.travelassistant.managers.storagemanager.StorageManager.F (StorageManager.java:1812)
at com.norwegian.travelassistant.managers.e.a (LanguageManager.java:63)
at com.norwegian.travelassistant.managers.e.a (LanguageManager.java:84)
at com.norwegian.travelassistant.tabbar.TabsActivity.onCreate (TabsActivity.java:141)
at android.app.Activity.performCreate (Activity.java:6705)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2664)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2772)
at android.app.ActivityThread.-wrap12 (ActivityThread.java)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1515)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:241)
at android.app.ActivityThread.main (ActivityThread.java:6217)
at java.lang.reflect.Method.invoke! (Native method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:755)
Indica si necesitas más información.
El bloqueo se debe a la ANR en su Servicio, antes del lanzamiento de su Actividad.
Si un usuario inicia su aplicación durante una tarea de larga duración en su Servicio, la Actividad no se creará hasta que finalice la tarea en el servicio. Esta espera puede parecer extraña para el usuario que lanza su aplicación, y luego la deslizan en el conmutador de tareas, lo que elimina el registro de tareas del ActivityManager (pero el proceso aún se mantiene vivo en este momento).
Cuando la tarea de larga duración en el servicio finalmente regresa, desbloquea la actividad para que no se inicie, pero en este momento la actividad generará una excepción de ActivityRecord not found
porque ya se eliminó.
El siguiente diagrama de secuencia podría explicar mejor el accidente.
El crédito es para YogiAi, quien originalmente investigó el problema en este post .
Una de las razones de este problema puede ser - pérdida de memoria. En el blog de Houde, escribe la aplicación que usa EventBus para recibir el evento para cerrar la Actividad, y un Evento estaba escribiendo una clase interna, causada por una pérdida de memoria.
La pérdida de memoria provoca actividad, no se inicia, pero se reinicia. Eso causa problema por sus palabras.
Otro problem podría ser la pausa de la actividad / detener / destruir el tiempo de espera. Puede llevar a lo mismo.