如何解决Parcelable 比 HashMap 的 Serializable 快
在 Android 中,Parcelable
应该比 Serializable
快得多。然而 HashMap
不是 Parcelable
,如果我们的键/值是原始类型或 Parcelable
,我们仍然可以使它成为 Parcelable
,如下所示:
class MyParcelableMap() : HashMap<Int,String>(),Parcelable {
constructor(parcel: Parcel) : this() {
val keys = parcel.createIntArray() ?: IntArray(0)
val values = parcel.createStringArray() ?: emptyArray<String>()
keys.forEachIndexed {i,k ->
this[k] = values[i]
}
}
override fun writetoParcel(parcel: Parcel,flags: Int) {
val entries = this.entries
val keys = entries.map { it.key }.toIntArray()
val values = entries.map { it.value }.toTypedArray()
parcel.writeIntArray(keys)
parcel.writeStringArray(values)
}
override fun describeContents(): Int {
return 0
}
companion object CREATOR : Parcelable.Creator<MyParcelableMap> {
override fun createFromParcel(parcel: Parcel): MyParcelableMap {
return MyParcelableMap(parcel)
}
override fun newArray(size: Int): Array<MyParcelableMap?> {
return arrayOfNulls(size)
}
}
}
由于我们将手动读取/写入每个条目,我不确定这会比 Serializable
快,假设 Serializable
将仅重建地图而不会一一添加条目。
如果 Parcelable
不是更快,那么这样做没有任何好处,我们可以将 Map<Int,String>
作为 Serializable
传递,不需要额外的代码。所以我想知道在这种情况下是否更快 Parcelable
,或者这可能取决于地图大小。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。