Composable Function

rememberSerializable

Remember the value produced by init, and persist it across activity or process recreation using a KSerializer for saving and restoring via the saved instance state mechanism.

RememberSaveableWithSerializer

@Sampled
@Composable
fun RememberSaveableWithSerializer() {
    val holder = rememberSerializable(serializer = HolderSerializer) { Holder(0) }
}

RememberSaveableWithSerializerAndMutableState

@Sampled
@Composable
fun RememberSaveableWithSerializerAndMutableState() {
    val holder =
        rememberSerializable(stateSerializer = HolderSerializer) { mutableStateOf(Holder(0)) }
}

private data class Holder(var value: Int)

private val HolderSaver = Saver<Holder, Int>(save = { it.value }, restore = { Holder(it) })

private object HolderSerializer : KSerializer<Holder> {

    private val valueSerializer = Int.serializer()

    override val descriptor =
        buildClassSerialDescriptor(Holder::class.qualifiedName!!) {
            element("value", PrimitiveSerialDescriptor("value", PrimitiveKind.INT))
        }

    override fun serialize(encoder: Encoder, value: Holder) {
        encoder.encodeSerializableValue(valueSerializer, value.value)
    }

    override fun deserialize(decoder: Decoder): Holder =
        Holder(decoder.decodeSerializableValue(valueSerializer))
}
Jetpack Compose beyond MaterialFree components, screens and templates for apps that don’t look like Google’s. Copy them into your app, or let your coding agent add them.Browse for free

Content updated: