web-dev-qa-db-ja.com

バイト単位のバンドルサイズ

バンドルサイズをバイト単位で知る方法はありますか?これを尋ねる私のポイントは、パーセル可能なオブジェクトリストをbundleonSaveInstanceStateに保存しているということです。

バンドルサイズがサイズ制限に達しているかどうかを確認し、それ以上データが保存されないようにし、TransactionTooLarge例外が発生しないようにする必要があります。

12
Ayush Khare

私にとって最も簡単な方法は次のとおりです。

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

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

  return bytes.size
}
3
Martynas Jurkus

パーセルクラスにはdataSize()メンバーがあるため、marshall()を呼び出さなくても同じ結果を得ることができます。

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

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

    return size;
}
4