【发布时间】:2019-05-02 14:34:59
【问题描述】:
我正在尝试创建一个带有ArrayList<Byte> 的Intent 作为额外的。
所以我有 3 个选择:
putParceableArrayList(key: String?, value: ArrayList<out Parceable!>?)putByteArray(key: String?, value: ByteArray?)putSerializable(key: String?, value: Serializable?)
我宁愿不使用第三个选项,因为 Parceable 对象比 Serializable 对象更快 (Android: Difference between Parcelable and Serializable?)。
放弃这个选项,我想使用第一个选项,因为我需要这个对象作为 ArrayList 而不是原生数组 bytes[](Kotlin 上的 ByteArray)。
问题是 Byte 对象是原生的,所以它没有实现 Parceable。所以,我不能使用第一个选项,因为它需要ArrayList<out Parceable>。
我发现的最佳选择是将ArrayList 转换为ByteArray,然后在我像这样打开附加组件时将其转换回ArrayList:
intent.extras?.putByteArray(event, response.toByteArray())
[...]
var list = Arrays.asList(intent.extras?.getByteArray(event))
哪个是最好的选择?谢谢!
【问题讨论】:
-
如果你不能避免将整个列表作为额外的发送,我会使用 Serializable。
标签: android arrays arraylist kotlin