android - 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因为内存不足而需要杀死我的片段时,我得到了这个错误:))
解决方案
如果要序列化或打包某些内容,则需要确保每个字段都是可序列化或可打包的。在您的情况下,您正在尝试序列化val function: ()-> Unit
不可序列化的。不幸的是,您不能使函数可序列化。你应该重新考虑这个参数类并传递一些不同的东西。可能你可以获得一些参数来做出决定,然后在你的片段中调用一个函数。
推荐阅读
- azure - Azure AD Connect - 更改 sourceanchor
- python-3.x - request.args 中的烧瓶可选参数
- c# - 如何使 sql 选择动态字符串比较起作用?
- ios - 在 TabBarController 之间共享 UIViewController 实例
- python - 未找到带有参数 '('',)' 的 'user' 的反向操作。尝试了 1 种模式:['project/users/(?P
[0-9]+)/$'] - javascript - 您好我想仅通过过滤器功能过滤嵌套数组中的数据
- java - 如何在 Java 中实现多对多关系?
- node.js - React 编译错误“尝试导入错误:'./registerServiceWorker' 不包含默认导出(导入为'registerServiceWorker')。”
- java - 如何将 Apache Camel 路由到内存中的 ActiveMQ JMS 队列
- mysql - MySQL程序检查下一个空闲值