Android 是否可以将lambda传递给Intent?

Android 是否可以将lambda传递给Intent?,android,serialization,lambda,kotlin,Android,Serialization,Lambda,Kotlin,我想知道是否有可能在kotlin中将lambda传递给Intent,因为lambda是可序列化的,但是使用这段代码,我在创建PendingEvent时遇到了错误 val bundle = bundleOf(ACTION to { pause() }) val playButtonIntent = Intent(this, MusicService::class.java).apply { putExtras(bundle) } val pendingPlayIntent = Pe

我想知道是否有可能在kotlin中将lambda传递给Intent,因为lambda是可序列化的,但是使用这段代码,我在创建PendingEvent时遇到了错误

val bundle = bundleOf(ACTION to { pause() })
val playButtonIntent = Intent(this, MusicService::class.java).apply {
        putExtras(bundle)
}
val pendingPlayIntent = PendingIntent.getService(this, 1, playButtonIntent, 0)
错误:

java.lang.RuntimeException: Parcelable encountered IOException writing serializable object

Lambda本身是可序列化的。但在您的例子中,它关闭了一个可能不可序列化的变量
bundle
。因此,它正在创建一个Lambda类,其中包含一个成员来保存该闭合变量。不能创建一个可序列化的对象,该对象中包含破坏序列化的内容

因此,您需要找到一种方法,不保存该bundle类,或者需要使其可序列化


有关更多详细信息,请参见SO中的另一个问题:

它们是@Pawel,这不是问题本身。我已经创建了一个包装器TrackedReference