2017-09-19 4 views
6

J'ai un blocage dans mon application. Cela arrive pour beaucoup d'utilisateurs et ses multiples endroits dans la méthode ActivityThread.java reportSizeConfigurations. Je ne sais pas à quoi cela sert, et pourquoi il se fige.Android ActivityThread.reportSizeConfigurations provoque le blocage de l'application avec un écran noir, puis un plantage

Le gel se produit juste après l'écran de démarrage (lorsque l'activité principale est démarrée) et se produit uniquement lors de la mise à niveau de l'application. Si vous réinstallez l'application, le problème disparaît. Le problème est, je ne peux pas dire à tous les utilisateurs de réinstaller l'application ...

Est-ce que quelqu'un sait ce qui pourrait causer cela et pourquoi? Il semble peut-être être connecté avec une certaine manipulation de DB, mais c'est juste une supposition.

Heres le stacktrace 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) 

Heres le stacktrace de 'ANR & se bloque' magasin de jeu:

"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) 

S'il vous plaît dire si vous avez besoin de plus d'informations

+0

On dirait que c'est connecté à la base de données E/S dans le thread principal. Je n'ai jamais eu ce problème auparavant, mais peut-être que quelque chose a changé ... – Otziii

+0

Mon problème était de supprimer et de réintégrer la base de données. Une réparation laide, mais ça a marché. Semblait comme beaucoup d'utilisateurs ont des bases de données corrompues avec la sortie. Pourquoi, je n'ai aucune idée ... – Otziii

Répondre

5

L'accident est causé par l'ANR sur votre Service, avant le lancement de votre activité.

Si un utilisateur lance votre application pendant une tâche de longue durée de votre service, l'activité ne sera pas créée jusqu'à ce que la tâche sur le service se termine. Cette attente peut sembler bizarre à l'utilisateur qui lance votre application, puis elle balaie votre application dans le sélecteur de tâches, ce qui supprime l'enregistrement de tâche de ActivityManager (mais le processus est toujours maintenu actif à ce moment). Lorsque la tâche de longue durée sur le service retourne finalement, il débloque l'activité de lancement, mais à ce moment l'activité lancera ActivityRecord not found exception car elle a déjà été supprimée.

Le diagramme de séquence suivant peut mieux expliquer le plantage. enter image description here

Le mérite revient à YogiAi, qui a initialement enquêté sur le problème au this post.

+0

Je ne pense pas que c'était le problème dans mon cas. Si vous avez attendu longtemps, l'application s'est écrasée. Même si vous n'avez pas "tuer" ou "glisser" l'application. Réinitialiser la base de données fonctionnait, donc en quelque sorte la base de données a été corrompue, et quand j'ai essayé d'y accéder, l'application a gelé et s'est écrasé. Je ne sais pas pourquoi ... – Otziii