gpt4 book ai didi

android - 仅在多模块项目中出现的 Jetpack Compose 性能问题

转载 作者:行者123 更新时间:2023-12-04 23:39:37 24 4
gpt4 key购买 nike

我在 Jetpack Compose 中开发了一个相当复杂的键盘布局。最初,布局工作正常,按下按键时动画运行非常流畅。不幸的是,由于事件的一些重新组合后,动画和一切都变得非常缓慢和滞后。
我尝试对 Jave 方法调用进行采样,但我只能看到某些函数比平时花费的时间要长得多。
编辑:
我已经能够隔离问题。我发现性能问题只出现在多模块项目中。当我将完全相同的撰写代码放在根目录app模块问题消失。
我创建了一个重现该问题的项目:

  • Mutli Module Project with performance issue
  • Single Module Project without performace issue

  • 如果您想在多模块项目中重现该问题,您必须多次在类别之间切换,然后一切都变得非常滞后
    Example Video
    注意:我知道 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 { ... }
    源代码: https://github.com/dautovicharis/example_compose-keyboard-multimodule/commits/main

    关于android - 仅在多模块项目中出现的 Jetpack Compose 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65818058/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com