I want to save my result from API inside SavedStateHandle
for my ViewModel
.
For this reason I made all of my data Parcelable
to make this function.
Code:
@Parcelize
data class DataResult(
val result: Result<List<MyData>>?,
) : Parcelable
@Parcelize
data class MyData(
val id: String,
val name: String,
val phone: String,
val photo: String? = null): Parcelable
class MyViewModel(savedState: SavedStateHandle): ViewModel(){
val resultData = savedState.getLiveData<DataResult?>("resultData", null)
...
}
Getting exception when I minimize app and go to background:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = kotlin.Result)
Caused by: java.io.NotSerializableException: com.my.project.viewmodel.MyData
I just wrapped Result
class in my own Data class
and made it Parcelable
just in case although Result
class is Serializable
by default so it should not be a problem at all.