捆绑大小(以字节为单位)

Ayu*_*are 10 android bundle exception

有没有办法知道字节大小的包大小?我在问这个问题是我在我的储蓄parcelable对象名单bundleonSaveInstanceState.

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

Mar*_*kus 16

我认为对我来说最简单的方法是:

fun getBundleSizeInBytes(bundle : Bundle) : Int {
  val parcel = Parcel.obtain()
  parcel.writeValue(bundle)

  val bytes = parcel.marshall()
  parcel.recycle()

  return bytes.size
}
Run Code Online (Sandbox Code Playgroud)


小智 10

Parcel 类具有 dataSize() 成员,因此无需调用 marshall() 即可获得相同的结果:

int getBundleSizeInBytes(Bundle bundle) {
    Parcel parcel = Parcel.obtain();
    int size;

    parcel.writeBundle(bundle);
    size = parcel.dataSize();
    parcel.recycle();

    return size;
}
Run Code Online (Sandbox Code Playgroud)