首页 > 解决方案 > Android 无法序列化 Kotlin lambda

问题描述

我们可以读取 lambda 函数默认为序列化(https://discuss.kotlinlang.org/t/are-closures-serializable/1620),
但我收到错误:

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.example.dialogfragment.Arguments)

我的课堂论点:

class Arguments(val function: ()-> Unit) : Serializable

我的 lambda 有什么问题?
(当Android因为内存不足而需要杀死我的片段时,我得到了这个错误:))

标签: androidkotlinserializationjvm

解决方案


如果要序列化或打包某些内容,则需要确保每个字段都是可序列化或可打包的。在您的情况下,您正在尝试序列化val function: ()-> Unit不可序列化的。不幸的是,您不能使函数可序列化。你应该重新考虑这个参数类并传递一些不同的东西。可能你可以获得一些参数来做出决定,然后在你的片段中调用一个函数。


推荐阅读