我有一个简单ViewModel
的SavedStateHandle
. thisViewModel
有一个LiveData
that hold MyViewState<List<MyDataClass>>
,如下:
sealed class MyViewState<T> : Parcelable {
@Parcelize data class ErrorState<T>(val error: @RawValue Any?): MyViewState<T>()
@Parcelize data class SuccessState<T>(val data: @RawValue T): MyViewState<T>()
}
和
@Parcelize data class MyDataClass(val data: String): Parcelable
LiveData
in 的检索ViewModel
方式如下:
class MyViewModel(
private val handle: SavedStateHandle
): ViewModel() {
var myLiveData = handle.getLiveData<MyViewState<List<MyDataClass>>>("myLiveData")
...
}
这很好用。但是,一旦应用程序被杀死并且我切换回它,应用程序就会崩溃并出现以下异常:
E/Parcel: Class not found when unmarshalling: com.myapp.models.MyDataClass
java.lang.ClassNotFoundException: com.myapp.models.MyDataClass
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:453)
at android.os.Parcel.readParcelableCreator(Parcel.java:2811)
at android.os.Parcel.readParcelable(Parcel.java:2765)
at android.os.Parcel.readValue(Parcel.java:2668)
at android.os.Parcel.readListInternal(Parcel.java:3098)
at android.os.Parcel.readArrayList(Parcel.java:2319)
at android.os.Parcel.readValue(Parcel.java:2689)
at com.myapp.core.MyViewState$Success$Creator.createFromParcel(Unknown Source:13)
...
...我无法弄清楚为什么会发生这种崩溃以及如何解决它。
有任何想法吗?