Android ActivityThread.reportSizeConfigurations bewirkt, dass die App mit schwarzem Bildschirm einfriert und dann abstürzt

Lesezeit: 6 Minuten

Ich habe einen Absturz in meiner App. Dies geschieht für viele Benutzer und ihre mehreren Stellen in der ActivityThread.java-Methode reportSizeConfigurations. Ich weiß nicht, wofür dies verwendet wird und warum es einfriert.

Das Einfrieren erfolgt direkt nach dem Begrüßungsbildschirm (wenn die Hauptaktivität gestartet wird) und tritt nur beim Aktualisieren der App auf. Wenn Sie die Anwendung neu installieren, verschwindet das Problem. Das Problem ist, dass ich nicht allen Benutzern sagen kann, dass sie die Anwendung neu installieren sollen …

Weiß jemand woran das liegen könnte und warum? Es scheint vielleicht mit etwas DB-Handling zusammenzuhängen, aber das ist nur eine Vermutung.

Hier der Stacktrace von 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)

Hier ist der Stacktrace aus dem Play Store ‘ANRs & crashes’:

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

Bitte sagen Sie, wenn Sie weitere Informationen benötigen

  • Scheint, als wäre es mit der Datenbank-E/A im Hauptthread verbunden. Ich hatte dieses Problem noch nie, aber vielleicht hat sich etwas geändert …

    – Ötziii

    19. September 2017 um 21:05 Uhr

  • Meine Lösung bestand darin, die Datenbank zu löschen und erneut zu instanziieren. Eine hässliche Lösung, aber es hat funktioniert. Es schien, als hätten viele Benutzer mit der Veröffentlichung beschädigte Datenbanken erhalten. Warum, keine Ahnung…

    – Ötziii

    2. Oktober 2017 um 8:03 Uhr

Benutzer-Avatar
Ian Wang

Der Absturz wird durch die ANR Ihres Dienstes vor dem Start Ihrer Aktivität verursacht.

Wenn ein Benutzer Ihre App während einer lang andauernden Aufgabe in Ihrem Dienst startet, wird die Aktivität erst erstellt, wenn die Aufgabe im Dienst abgeschlossen ist. Dieses Warten kann für den Benutzer, der Ihre App startet, bizarr aussehen, und er wischt dann Ihre App im Aufgabenwechsler weg, wodurch der Aufgabendatensatz aus dem ActivityManager entfernt wird (aber der Prozess wird zu diesem Zeitpunkt noch am Leben gehalten).

Wenn die lang andauernde Aufgabe für den Dienst schließlich zurückkehrt, entsperrt sie den Start der Aktivität, aber zu diesem Zeitpunkt wird die Aktivität ausgelöst ActivityRecord not found Ausnahme, da sie bereits entfernt wurde.

Das folgende Sequenzdiagramm könnte den Absturz besser erklären.Geben Sie hier die Bildbeschreibung ein

Der Dank geht an YogiAi, der das Problem ursprünglich in untersucht hat dieser Beitrag.

  • Ich glaube nicht, dass das in meinem Fall das Problem war. Wenn Sie nur lange gewartet haben, ist die App abgestürzt. Obwohl Sie die Anwendung nicht “beendet” oder “gewischt” haben. Das erneute Initiieren der DB funktionierte, also wurde die DB irgendwie beschädigt, und als ich versuchte, darauf zuzugreifen, fror die App ein und stürzte ab. Ich weiß nicht warum…

    – Ötziii

    24. Januar 2018 um 12:54 Uhr


  • Der geteilte Beitrag benötigt Gebühren, um den vollständigen Artikel zu lesen, was nicht viel hilft.

    – hjchin

    27. Juni 2018 um 0:38 Uhr

  • Ich kann den Link nicht öffnen. gibt es erfahrungen zur lösung dieses problemes?

    – Philipp

    12. Juli 2018 um 19:12 Uhr

  • Kann das Problem auftreten wenn ich anrufe finish() in Aktivitäten onCreate()?

    – Artem Mostyaev

    24. September 2018 um 7:13 Uhr

  • Dieses Problem existierte also und jetzt nicht mehr? Oder was? Es gibt keine Abhilfe? Scheint zumindest bis Android 9 zu dauern …

    – Android-Entwickler

    13. Oktober 2020 um 10:45 Uhr

Bei Google ist ein Fehler aufgetreten, der bei App-Upgrades exklusiv für Samsung zu sein scheint

https://issuetracker.google.com/issues/62427912

  • Gleiches Problem auf Samsung Galaxy J8 mit Android 9.

    – Prasad Pawar

    25. Juli 2019 um 7:33 Uhr

  • Ich habe das nur in Android 9

    – Duna

    23. September 2020 um 11:56 Uhr

  • Ich habe das auch auf HUAWEI-Geräten. Wurde es wirklich behoben? Ab welcher Android-Version?

    – Android-Entwickler

    13. Oktober 2020 um 10:45 Uhr

  • Ich habe es auf Huawei nova 3i mit Android 8.1.0 bekommen. Es ist ein seltener Absturz und scheint zu passieren, wenn sich das Gerät im Hintergrundzustand befindet. Aber ein Fix wird nützlich sein.

    – MeLean

    20. Mai 2021 um 12:23 Uhr

Benutzer-Avatar
StepanM

Einer der Gründe für dieses Problem kann ein Speicherleck sein. Bei Houde bloggen Er schreibt die App, die EventBus verwendet, um das Ereignis zum Schließen der Aktivität zu empfangen, und ein Ereignis schrieb eine interne Klasse, die durch ein Speicherleck verursacht wurde.

Ein Speicherleck führt dazu, dass die Aktivität nicht gestartet, sondern neu gestartet wird. Das verursacht Probleme durch seine Worte.

Andere Problem könnte Aktivität Pause/Stopp/Zerstören Timeout sein. Es kann zum selben führen

1227700cookie-checkAndroid ActivityThread.reportSizeConfigurations bewirkt, dass die App mit schwarzem Bildschirm einfriert und dann abstürzt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy