有没有办法知道以字节为单位的捆绑包大小?我要问的是,我在bundle
onSaveInstanceState
TransactionTooLarge
上保存了可分配的对象列表。
我需要检查捆绑包大小是否达到了它的大小限制,并防止更多数据被保存,并防止发生Date
异常。
答案 0 :(得分:3)
我认为对我来说最简单的方法是:
fun getBundleSizeInBytes(bundle : Bundle) : Int {
val parcel = Parcel.obtain()
parcel.writeValue(bundle)
val bytes = parcel.marshall()
parcel.recycle()
return bytes.size
}
答案 1 :(得分:3)
Parcel类有dataSize()成员,因此可以在不调用marshall()的情况下实现相同的结果:
int getBundleSizeInBytes(Bundle bundle) {
Parcel parcel = Parcel.obtain();
int size;
parcel.writeBundle(bundle);
size = parcel.dataSize();
parcel.recycle();
return size;
}