如何在 onSaveInstanceState 中查看 Bundle 对象的大小?

How to examine the size of the Bundle object in onSaveInstanceState?

我正在使用 Android Studio 3.0.1,它允许检查 onSaveInstanceState 中的 Bundle 对象:

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
}

为此添加一个断点,一旦调试器停止,请右键单击屏幕截图中显示的 Bundle 对象,然后从上下文菜单中单击 select "Show Bundle Objects..."。

然后 window 打开以列出 Bundle 对象,如以下屏幕截图所示:

有没有办法找出整个Bundle及其子项占用多少内存?我想确定更大的块来优化并避免 TransactionTooLargeException 在 Android >= 7.

上被抛出

像 Ubuntu 磁盘使用分析器 之类的东西会有所帮助 - 请参阅屏幕截图:

你也可以使用这个:-

=> 只需在此处传递 Bundle

public int  getBundleSizeInBytes(Bundle bundle  ) {
            Parcel parcel = Parcel.obtain();
            parcel.writeValue(bundle);
            byte[] bytes = parcel.marshall();
            parcel.recycle();
            return bytes.length;
}

然后用android.text.format.Formatter.formatFileSize(activityContext, bytes)输出好看

TooLargeTool 非常适合在诊断 TransactionTooLargeException 时分析包大小。