Yan*_*ick 7 android android-jetpack-compose
我在 Jetpack Compose 中开发了一个非常复杂的键盘布局。最初,布局工作正常,按下按键时动画运行非常流畅。不幸的是,由于事件的一些重新组合后,动画和一切变得非常缓慢和滞后。我曾尝试对 Java 方法调用进行采样,但我只能看到某些函数比平时花费的时间要长得多。
编辑:
我已经能够隔离问题。我发现性能问题只出现在多模块项目中。当我在根模块中放入完全相同的撰写代码时,app问题就消失了。
我创建了一个重现该问题的项目:
如果你想在多模块项目中重现这个问题,你必须多次在类别之间切换,然后一切都会变得非常滞后
注意:我知道 Jetpack Compose 仍处于 alpha 阶段,这个问题可能是 Jetpack Compose 中的一个错误。但我想确保这不是我的代码错误或 Compose 的一般限制
解决方案是使用remember可组合性来Keyboard @Composable防止重组期间的布局计算。
val refs: List<List<Pair<Key, ConstrainedLayoutReference>>> =
remember {
keyboard.map { row ->
row.map {
it to createRef()
}
}
}
val modifier = remember { ... }
val modifierPressed = remember { ... }
Run Code Online (Sandbox Code Playgroud)
源代码: https://github.com/dautovicharis/example_compose-keyboard-multimodule/commits/main