找出Jetpack Compose中触发重绘的原因。

11

在我的Jetpack Compose应用程序中,我有一个包裹着AndroidViewWebView。调试时,我发现WebView被绘制了两次(在包含AndroidView的组合函数处设置断点会触发两次)。检查代码后,我没有看到任何可能触发此更新的状态更新。

是否有任何策略或工具可以识别触发@Composable重绘的“事件”?


这不是一个答案,但可能会有所帮助:// 要观察何时发生重新绘制和其他信息,请执行以下操作:private var I = 0 private var registerApplyObserver: ObserverHandle? = nullregisterApplyObserver = Snapshot.registerApplyObserver { mutatedObjects, snapshot -> Log.i("TEST_TAG", "[${I++}] 正在应用快照") for (obj in mutatedObjects) { Log.d("TEST_TAG", "[${I++}] 状态 $obj 已修改") } } - Gerardo Rodriguez
你的代码中有NavHost吗?如果有的话,可能需要重新组合它。有时候会出现两次,甚至更多。我在这里有一个关于它的问题链接 - Thracian
不,我在那个项目中没有使用导航。无论如何,还是谢谢你的提示。 - noe
这个问题已经快两年了,但是目前处于预览阶段的Android Studio Dolphin中的布局检查器有一个重组计数功能,可能能够帮助你进一步调试! - beyondtheteal
1个回答

1
是的!现在您可以通过常规的调试过程和断点识别可能导致重新组合的变更。
这个功能已经在最新版本的Android Studio Hedgehog中可用。
您可以在这里阅读更多关于这个功能的信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接