应用程序空闲状态

为了提高 CPU 性能,Kanzi 在您的 Kanzi 应用程序空闲时不会重绘应用程序内容。

Kanzi 在没有输入、任务、计时器、动画,或应用程序中没有任何更新渲染的内容时暂停主循环。

当使用应用程序空闲状态时,请考虑:

  • 如果您的 Kanzi 应用程序正在显示动画,Kanzi 默认情况下将 CPU 节流到最大 FPS。如果没有动画,Kanzi 会将应用程序设置为空闲状态。出于这个原因,为了节省 CPU 和电力,Kanzi 默认情况下将最大帧率限制为每秒 60 帧。使用应用程序配置来设置应用程序的最大帧率。

    请参阅 MaximumFPS。

  • 如果您的应用程序依赖于持续执行某些主循环任务,例如您添加到主循环 UserStage 的功能,请禁用空闲状态。

    请参阅 ApplicationIdleState。

  • 当您的应用程序处于空闲状态并且应用程序对渲染通道树进行更改时,Kanzi 不会触发渲染来呈现更改。要在这种情况下渲染更改,您必须通过在任何节点上调用 Node::invalidateDraw 函数手动触发渲染。

如果您想在 Kanzi 应用程序中有效使用应用程序空闲状态,请记住:

  • 任务调度器。任务调度器允许其他线程在 UI 线程中调度任务的执行。这样,当仅在其他线程中发生更改时,您可以唤醒 UI 线程。当您将任务添加到任务调度器时,每个任务都会唤醒 UI 线程。如果您想优化应用程序的 CPU 性能,请仅在需要时将任务添加到任务调度器。

  • 计时器。计时器使应用程序保持唤醒状态,并影响CPU性能。每次在应用程序中触发计时器时,都会将应用程序从空闲状态唤醒。如果您在应用程序中集成了声音,请不要每帧都进行同步。例如,将应用程序设置为每100毫秒同步一次声音。

  • 对布局和渲染进行的更改。

    • 当在您用来设置节点大小的属性中启用 Affect Layout 设置时,应用程序将保持唤醒状态,直到 Kanzi 完成布局的重新计算并渲染新布局。

    • 当您用于渲染节点的属性中启用了 Affect Rendering 设置,但更改对节点大小没有影响(Affect Layout 设置被禁用)时,Kanzi 不会重新计算布局,而只是重新渲染。应用程序将保持唤醒状态,直到 Kanzi 渲染更改。

您可以在应用程序配置中设置应用程序空闲状态。请参阅 ApplicationIdleState。

另请参阅

优化应用程序的启动时间

排除应用程序性能问题