Мое приложение падает после того, как процесс убит и воссоздан — со следующим исключением.
06-15 15:21:15.064 3610-3610/com.example.app E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.app, PID: 3610
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.ui.module.main.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@17b7cca: Unmarshalling unknown type code 1279544898 at offset 1084
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@17b7cca: Unmarshalling unknown type code 1279544898 at offset 1084
at android.os.Parcel.readValue(Parcel.java:2824)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:3195)
at android.os.Parcel.readSparseArray(Parcel.java:2407)
at android.os.Parcel.readValue(Parcel.java:2802)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3114)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:273)
at android.os.BaseBundle.unparcel(BaseBundle.java:226)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:1009)
at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2129)
at android.app.Activity.onRestoreInstanceState(Activity.java:1102)
at android.app.Activity.performRestoreInstanceState(Activity.java:1057)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1260)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
06-15 15:21:15.065 3610-3610/com.example.app E/UncaughtException: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.app/com.example.app.ui.module.main.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@17b7cca: Unmarshalling unknown type code 1279544898 at offset 1084
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@17b7cca: Unmarshalling unknown type code 1279544898 at offset 1084
at android.os.Parcel.readValue(Parcel.java:2824)
at android.os.Parcel.readSparseArrayInternal(Parcel.java:3195)
at android.os.Parcel.readSparseArray(Parcel.java:2407)
at android.os.Parcel.readValue(Parcel.java:2802)
at android.os.Parcel.readArrayMapInternal(Parcel.java:3114)
at android.os.BaseBundle.initializeFromParcelLocked(BaseBundle.java:273)
at android.os.BaseBundle.unparcel(BaseBundle.java:226)
at android.os.Bundle.getSparseParcelableArray(Bundle.java:1009)
at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2129)
at android.app.Activity.onRestoreInstanceState(Activity.java:1102)
at android.app.Activity.performRestoreInstanceState(Activity.java:1057)
at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1260)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2751)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
Я наткнулся на этот, казалось бы, похожий вопрос с принятым ответом. Он указывает на то, что ProGuard запутывает реализацию Parcelable
, как на причину, и устраняет проблему, добавляя правило ProGuard.
Я попытался добавить вышеупомянутое правило ProGuard к своим правилам ProGuard, но сбой все равно происходит. Я полностью отключил ProGuard, и приложение все равно вылетает.
Еще больше озадачивает тот факт, что я активно стараюсь избегать использования Parcelable
. Он по-прежнему распространен в некоторых старых кодовых базах, но я стараюсь удалить его, когда могу (и реализовать новую структуру ViewModel
). Единственное место, где я вижу, что Parcelable
используется в onRestoreInstanceState
для пользовательского класса Preference
, который я создал; но сбой происходит после успешного вызова этих методов. Трассировка стека, похоже, ни на что не указывает, только на то, что MainActivity
дает сбой, даже не на номер строки.
Обновить
Единственное использование Parcelable
, на которое ссылаются в классе, который использует MainActivity
, находится в пользовательском классе WallpaperPreference
. Этот класс используется в Fragment
, встроенном в MainActivity
. Я удалил это Fragment
из активности, и сбой все еще происходит.
Parcelable
, я обновлю свой вопрос. - person Bryan   schedule 15.06.201812.0.1
, еще не было возможности перейти на более новые версии. - person Bryan   schedule 17.06.2018