跳到主要内容

状态机

状态机

该库将屏幕的渲染管道建模为以下状态机。此状态机决定了库对“世界观”的感知,从而影响 API 的决策。

State machine

在此处编辑

根据上面的状态机,你可以看到:

  • 状态机从 Started 状态开始。
  • 该库引入了“渲染过程”的概念。一个屏幕可能会被多次渲染。例如,它可能会先显示一个加载指示器,然后只渲染屏幕的前半部分,最后渲染整个屏幕。该库将这些增量步骤建模为不同的“渲染过程”。
  • 这些渲染过程可能是 interactive(可交互的)也可能不是。一个 interactive 的渲染过程意味着用户在此之后可以与屏幕进行交互(例如,从缓存或网络数据渲染);一个非交互的渲染过程意味着用户不能(例如,加载屏幕,或仅部分渲染的屏幕)。
  • 该库支持多个增量渲染过程,并且可以循环遍历无限个渲染过程。
  • 对于每个这样的渲染过程完成,该库都会生成一个 RenderPassReport
  • 此外,如果屏幕在任何渲染过程完成且 interactive 设置为 true 之前卸载,该库也会生成一个 RenderPassReport
    • 这可以作为用户停止等待屏幕变为可交互状态并决定退出的信号。这可以用作用户感到沮丧的信号。
    • 对应于中止场景的此报告将携带一个 timeToAbortMillis 属性,而不是常规的 timeToRenderMillis

虽然你不需要在生产环境中使用此钩子,但你可以通过 useProfilerState 钩子监控库的内部状态转换(用于调试目的)。你会注意到与状态图中描述的类似的状态转换。