Sma*_*mer 5 android kotlin android-bundle onsaveinstancestate androidx
我正在toolargetool调查应用程序崩溃的原因TransactionTooLargeException。
androidx.lifecycle.BundlableSavedStateRegistry.key当我将应用程序置于后台时,我看到这个密钥大约有 400 KB。
这个密钥是什么以及它从哪里来?我怎样才能减少包中这个的大小?
就我而言,以下是存储在那里的内容:
我建议您自己调试,因为存储的内容及其大小对于您的项目会有所不同。
调试:
TooLargeTool.bundleBreakdown()。在断点处,您还可以使用类似以下的过滤器:KB(totalSize) > 500这样它只会在大尺寸的 Bundle(例如大于 500 KB 的 Bundle)处停止在断点处。在断点中尝试评估如下代码:
val bundle: Bundle = bundle.getBundle("androidx.lifecycle.BundlableSavedStateRegistry.key")!!
// bundleBreakdown(bundle) // <- this gives you a report including size etc.
val fragmentsBundle = bundle.getBundle("android:support:fragments")!!
bundleBreakdown(fragmentsBundle)
Run Code Online (Sandbox Code Playgroud)
您当然也可以在 IDE 的“调试”窗口中看到捆绑包,但很难看到捆绑包的键和大小。
这样你就可以用 key 准确地找出这个 Bundle 中的空间占用情况androidx.lifecycle.BundlableSavedStateRegistry.key
| 归档时间: |
|
| 查看次数: |
2145 次 |
| 最近记录: |