4

我正在使用 Android Studio 3.0.1,它允许检查以下Bundle对象onSaveInstanceState

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

为此,添加一个断点,一旦调试器停止,右键单击Bundle对象,如屏幕截图所示,然后从上下文菜单中选择“显示捆绑对象...”。

Android Studio - 显示捆绑对象

然后会打开一个窗口列出Bundle对象,如下图所示:

Android Studio - 捆绑对象

有没有办法找出整个和它的孩子占据了多少内存?Bundle我想确定更大的块来优化并避免TransactionTooLargeException在 Android >= 7 上抛出。

像 Ubuntu Disk Usage Analyzer这样的东西会有所帮助 - 请参阅 screeshot:

磁盘使用分析器

4

2 回答 2

6

你也可以使用这个:-

=> 在这里传递 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)输出很好。

于 2017-12-04T12:17:03.007 回答
2

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

于 2019-01-31T13:33:57.353 回答