捆绑大小以字节为单位

时间:2017-07-26 05:29:19

标签: android exception bundle

有没有办法知道以字节为单位的捆绑包大小?我要问的是,我在bundle onSaveInstanceState TransactionTooLarge上保存了可分配的对象列表。

我需要检查捆绑包大小是否达到了它的大小限制,并防止更多数据被保存,并防止发生Date异常。

2 个答案:

答案 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;
}