2017-09-19 7 views
6

私のアプリにクラッシュがあります。これは、多くのユーザーと、ActivityThread.javaのreportSizeConfigurationsメソッド内の複数の場所で発生します。私はこれが何のために使われているのか、それがなぜフリーズするのかを知らない。Android ActivityThread.reportSizeConfigurationsは、アプリを黒い画面でフリーズさせてからクラッシュさせます。

フリーズは、スプラッシュ画面の直後(メインアクティビティの開始時)に発生し、アプリのアップグレード時にのみ発生します。アプリケーションを再インストールすると、問題は解決しません。問題は、私はすべてのユーザーにアプリケーションを再インストールするように指示することはできません...

これを引き起こす可能性のあることは誰でも知っていますか?それは多分いくつかのDBの処理に接続されているようだが、それはちょうど推測です。

相続人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) 

Playストアからの相続人はスタックトレース 'のANR &クラッシュ':

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

は、あなたがより多くの情報

+0

メインスレッドのデータベースI/Oに接続されているようです。 私はこれまでにこの問題を抱えたことはありませんでしたが、多分何かが変わったのです... – Otziii

+0

私の修正は、データベースを削除して再強化することでした。醜い修正だが、うまくいった。多くのユーザーがリリースで破損したデータベースを取得したようです。なぜ、私は考えていない... – Otziii

答えて

5

が必要な場合は、クラッシュがある教えてくださいあなたの活動を開始する前に、あなたのサービスのANRによって引き起こされたものです。

長時間実行しているタスクの実行中にユーザーがアプリケーションを起動した場合、サービスのタスクが終了するまで、アクティビティは作成されません。この待ち時間は、あなたのアプリを起動するユーザーに奇妙に見えるかもしれませんし、あなたはアクティビティマネージャからタスクレコードを削除するタスクスイッチャーでアプリをスワイプします(ただし、プロセスはまだ現時点で有効です)。

サービスの長期実行タスクが最終的に戻ると、アクティビティの起動がブロックされますが、この時点でアクティビティはすでに削除されているため、ActivityRecord not found例外をスローします。

次のシーケンス図は、クラッシュをよく説明しています。 enter image description here

最初にthis postで問題を調査したYogiAiには、クレジットが割り当てられます。

+0

私はこれが私の場合の問題だったとは思わない。長い間待っていただけで、アプリがクラッシュしました。あなたがアプリケーションを "殺す"または "スワイプ"しなかったとしても。 DBの作業を再開しました。何とかDBが破損していて、アクセスしようとすると、そのアプリケーションが凍ってクラッシュしました。 理由はわかりません... – Otziii

関連する問題