如何在 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 时分析包大小。
我正在使用 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 时分析包大小。