以字节为单位的包大小
Bundle size in bytes
有什么方法可以知道包大小(以字节为单位)?我问这个的意思是我在 bundle
[=11] 中保存可打包对象列表=].
我需要检查包大小是否达到其大小限制并防止保存更多数据,并防止发生 TransactionTooLarge
异常。
我认为对我来说最简单的方法是:
fun getBundleSizeInBytes(bundle : Bundle) : Int {
val parcel = Parcel.obtain()
parcel.writeValue(bundle)
val bytes = parcel.marshall()
parcel.recycle()
return bytes.size
}
Parcel class 有 dataSize() 成员,所以不用调用 marshall() 也能得到同样的结果:
int getBundleSizeInBytes(Bundle bundle) {
Parcel parcel = Parcel.obtain();
int size;
parcel.writeBundle(bundle);
size = parcel.dataSize();
parcel.recycle();
return size;
}
这是@Volodymyr Kononenko 使用 Kotlin 扩展函数为感兴趣的人提供的相同方法:
fun Bundle.bundleSizeInBytes(): Int {
val parcel = Parcel.obtain()
parcel.writeBundle(this)
val size = parcel.dataSize()
parcel.recycle()
return size
}
如果您希望 Bundle 的大小以千字节而不是字节为单位
fun Bundle.bundleSizeInKilobytes(): Double {
val parcel = Parcel.obtain()
parcel.writeBundle(this)
val size = parcel.dataSize().toDouble()/1000
parcel.recycle()
return size
}
顺便说一句,我不会使用 writeValue() 而不是 writeBundle(),因为 writeValue() 会额外增加 4 个字节的大小。
有什么方法可以知道包大小(以字节为单位)?我问这个的意思是我在 bundle
[=11] 中保存可打包对象列表=].
我需要检查包大小是否达到其大小限制并防止保存更多数据,并防止发生 TransactionTooLarge
异常。
我认为对我来说最简单的方法是:
fun getBundleSizeInBytes(bundle : Bundle) : Int {
val parcel = Parcel.obtain()
parcel.writeValue(bundle)
val bytes = parcel.marshall()
parcel.recycle()
return bytes.size
}
Parcel class 有 dataSize() 成员,所以不用调用 marshall() 也能得到同样的结果:
int getBundleSizeInBytes(Bundle bundle) {
Parcel parcel = Parcel.obtain();
int size;
parcel.writeBundle(bundle);
size = parcel.dataSize();
parcel.recycle();
return size;
}
这是@Volodymyr Kononenko 使用 Kotlin 扩展函数为感兴趣的人提供的相同方法:
fun Bundle.bundleSizeInBytes(): Int {
val parcel = Parcel.obtain()
parcel.writeBundle(this)
val size = parcel.dataSize()
parcel.recycle()
return size
}
如果您希望 Bundle 的大小以千字节而不是字节为单位
fun Bundle.bundleSizeInKilobytes(): Double {
val parcel = Parcel.obtain()
parcel.writeBundle(this)
val size = parcel.dataSize().toDouble()/1000
parcel.recycle()
return size
}
顺便说一句,我不会使用 writeValue() 而不是 writeBundle(),因为 writeValue() 会额外增加 4 个字节的大小。