优化 App.OnStart

已完成

用户启动您的应用时,应用对象上的 OnStart 属性将会运行。 该属性常用于评估用于检索和缓存您想要预加载的数据和用于设置全局变量的公式。 App.OnStart 属性在这项工作中可能会忙线,继而可能造成性能问题。 为帮助减少这类问题,即将发布的 Microsoft Power Platform 版本将提供或投资开发替代方案。 使用可满足您的应用需求的替代方案。 本主题会探讨一些可用的替代方案。

应用启动过程中,经常需要选择用户查看的第一个屏幕。 例如,应用可以在第一次运行时打开欢迎屏幕或实施指向特定详细信息页面的深入链接。 之前,常见做法是在 App.OnStart 属性中添加条件逻辑并使用 Navigate () 函数。 现已停止在 OnStart 中使用 Navigate () 函数,并且已禁止所有新应用在 App.OnStart 中使用 Navigate () 函数。

新方案是使用 App.StartScreen 属性。 本属性默认为空,并且会显示屏幕树视图中的第一个屏幕。 如果您在评估由 StartScreen 属性提供的公式并且出现了错误,则会返回第一个屏幕,就像属性为空一样。 您可使用 IfError () 函数获取错误,并重定向至适当的错误屏幕。

您可以将 StartScreen 属性设置为特定屏幕,以确保在树中移动时,该屏幕依然为起始屏幕。 您还可具有类似下图的条件逻辑,该逻辑可以查找用户。 如果用户没有地址,则会跳转至 ChooseLocation 屏幕而非 HomeScreen

StartScreen 是一个数据流属性,不能包含行为函数。 所有数据流函数均可用,并且常见以下示例:

  • 用于读取启动应用时所用参数的 Param() 函数

  • 用于读取当前用户相关信息的 User() 函数

  • 用于从数据源读取信息的 LookUp()、Filter()、CountRows()、Max() 和其他函数

  • 通过连接器的任何调用,但应快速实施

  • 连接、指南针和应用等信号

全局变量和集合(包括在 OnStart 中创建的变量和集合)在 StartScreen 属性中不可用。

系统在启动时会对 StartScreen 属性进行一次评估。 之后如需测试,可以更改属性。 您也可使用应用对象的导航至 StartScreen 上下文菜单命令手动强制进行重新评估。

如果您的应用比较老旧,则应更新应用以使用新的 StartScreen 属性。 更新应用之前,您可以转到设置 > 即将推出的功能 > 已停用选项卡,然后关闭在 App.OnStart 中启用导航函数的切换开关。 关闭本切换开关后,您仍可(在有限的时间内)继续在 OnStart 中使用 Navigate () 函数。

使用 OnVisible 而非 OnStart

查看 App.OnStart 中的公式,如果其中仅预加载了单个屏幕的信息,则将逻辑从 App.OnStart 移至该屏幕的 OnVisible 属性。

查看应用设置

新应用设置经常会随着 Power Apps 的更新而提供。 最好对这些设置进行审查,以确定其是否有帮助。 您在优化应用加载功能时,需考虑以下应用设置:

  • 启用 App.OnStart 属性 - 本项设置默认处于打开状态。 如果您不需要并且希望阻止使用 OnStart,可以考虑关闭本项设置。

  • 使用非锁定 OnStart 规则 - 在已发布的应用中,本项设置支持 App.OnStart 公式与其他应用规则并行运行。 关闭本项设置后,您的其他规则要等待 App.OnStart 完成才能开始。 新应用默认打开本项设置,但旧版应用则需要您手动启用。