我正在使用Android Studio 3.0.1,它允许检查Bundle
中的onSaveInstanceState
对象:
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
}
为此,添加一个断点,一旦调试器停止,请右键单击Bundle
对象,如屏幕截图所示,然后选择" Show Bundle Objects ..."从上下文菜单中。
然后会打开一个窗口列出Bundle
个对象,如此屏幕截图所示:
有没有办法找出整个Bundle
及其所有孩子占据的多少内存?我想识别要优化的更大块,并避免在Android> = 7上抛出TransactionTooLargeException
。
像Ubuntu 磁盘使用分析器之类的东西会有所帮助 - 请参阅screeshot:
答案 0 :(得分:4)
你也可以使用这个: -
=>只需通过这里的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)
输出得很好。
答案 1 :(得分:1)
TooLargeTool非常适合在诊断TransactionTooLargeException时分析捆绑包的大小。