在 Power Apps 移动应用中防止画布应用重启
当您在 Power Apps 移动应用中运行画布应用时,应用可能由于以下原因重新启动:
- 应用占用的总内存太多。
- 应用一次使用了太多内存或处理。
- 应用被移至后台 – 当您的特定应用使用本机控件(如添加图片或条码扫描仪)或用户将 Power Apps 移动应用置于后台时。
内存和处理限制(当 Power Apps 移动应用在后台运行时尤其严格)由操作系统(Android 或 iOS)强制执行。 如果应用使用的资源多于您设备上的可用资源,应用将重置。 这类似于当您访问一个大型的复杂网页时,如果网页消耗过多资源,Web 浏览器会挂起此页面。
在 Android 设备上,此应用重新启动可能看起来像是崩溃,因为应用已完全关闭,用户被带到设备的主屏幕。
使用本文了解如何阻止画布应用在 Power Apps Mobile 上重新启动。
最终用户阻止提示
应用制作者通常会做出最大改进,最终用户也可以使用这里给出的一些提示来减少应用的重新启动:
- 在 Power Apps 移动应用的用户配置文件页面上,选择清除缓存以删除保存的数据。 请注意,只有当最终用户有数据时,才能执行此操作,因为清除缓存将删除任何 SaveData 或应用缓存。
- 在 Android 设备上,确保 Power Apps 移动应用优先。 请参阅您的设备手册以通过电池优化和应用睡眠配置等设置保持应用运行。
- 关闭除 Power Apps 移动应用之外的所有正在运行的应用,并从设备中删除任何不需要的数据,如未使用的应用或图像。
- 处理较为复杂时,考虑慢一些使用应用 – 在屏幕导航之间或在拍照、保存或加载数据后暂停一小会儿。
应用制作者阻止提示
应用制作者可以对内存进行最大的改进,以减少应用重新启动。 在创建应用时,请记住优化应用,使其在最终用户将使用的最低规格设备上运行,并遵从有关资源使用的最佳做法。
备注
由于应用重新启动是由于操作系统限制了应用的内存和处理量引起的,因此可能需要结合以下建议的缓解措施来最小化应用重新启动。 可以减少的内存和处理量(无论是总量还是某一次)越多,应用重新启动的可能性就越小。
提示
您可以将移动应用会话连接到监视器,来查看应用正在执行繁重的处理或内存密集型操作的位置。 监视器是一种工具,它通过记录应用运行时发生的所有关键活动,让制作者深入了解应用程序的作用和操作方式。
难题 | 根本原因 | 缓解 |
---|---|---|
应用将在加载特定屏幕时重新启动。 | 如果某定屏幕同时运行了太多公式,应用可能会有太多的处理,会被操作系统重新启动。 | 限制屏幕上控件的数量以及加载屏幕时正在运行的公式的数量,这可能需要拆分屏幕。 避免屏幕之间的控件依赖关系。 阻止用户在高处理时间执行操作。 例如,当加载具有多个筛选器和查找的大型库时。 考虑使用命名公式。 考虑使用延迟加载应用设置。 |
应用将在多个屏幕导航后重新启动。 | 屏幕上发生内存泄漏,导致用户在应用中导航时内存使用量增加。 | 打开将最近访问过的屏幕保留在内存中应用设置。 虽然这在短期内增加了总内存使用量,因为屏幕保留在内存中,但在多个屏幕导航中,这将阻止内存泄漏。 |
当执行 SaveData/LoadData 或使用数据连接时,应用将重新启动。 | SaveData 和数据连接都会增加应用使用的总内存。 SaveData 也是一项处理量很大的操作。 将大量数据引入应用并保存这些数据以供脱机使用(尤其是媒体内容和文件),可能会导致应用超出其分配的内存,从而导致操作系统重新启动应用。 | 优化通过数据连接引入应用、通过 SaveData 保存的数据量。 在可能的情况下减少 SaveData 调用的数量。 打开显式列选择应用设置并关闭记录范围一对多和多对多关系应用也可以帮助减少引入应用的数据。 |
应用将在使用 camera 控件时重新启动。 | camera 控件将捕获的图像保存到内存。 这会增加应用的内存使用量,特别是在使用 OnStream 属性将捕获的图像保存到变量或 SaveData 中时。 | 不要保存最近捕获的图像以外的任何图像。 使用照片(而不是流)在用户点击相机时仅捕获图像。 如果您需要使用流,将 StreamRate 属性设置为尽可能高的值,以减少更新次数。 |
应用将在使用 添加图片 控件时重新启动。 | 添加图片 控件将所选媒体内容保存到内存中。 由于媒体内容的大小,这可能会导致严重的内存压力。 | 考虑更改媒体内容的捕获位置。 考虑关闭 UseMobileCamera 属性,让用户只能从库/照片图库中选择媒体。 考虑使用 attachment 控件(作为窗体的一部分)来仅选择文件,而不使用相机捕获文件。 考虑切换到 camera 控件。 |
当使用本机控件时,应用会重新启动,如 添加图片、条码扫描仪/Reader、在 MR 中查看、度量相机 等。 | 本机控件可以在重新启动应用之前将应用置于操作系统对内存有更严格限制的后台。 | 在使用这些控件之前,请确保所有内存和处理密集型操作都已完成。 例如,禁用 添加图片 控件,直到完成所有 SaveData 操作。 考虑切换到其他控件,如 相机,而不是 添加图片。 |
应用重新启动会发生在一部分设备上。 | 设备具有不同的可用内存和处理量。 例如,较旧的设备由于可用处理量较低,更容易重新启动应用程序。 运行其他应用也会减少可用的处理量。 同样,安装的其他应用和保存到设备的大量照片/媒体可能会占用内存,从而减少应用的可用处理量。 |
让您的用户参考最终用户阻止提示一节中列出的提示。 考虑使用满足应用性能需求的设备。 |
应用重新启动仍会发生。 | 内存使用情况受画布应用创作方式的影响。 确保您的应用遵从最佳做法,这有助于确保性能、减少内存使用量和处理。 | 按照以下最佳做法优化应用。 |
构建高性能应用的最佳做法
- 构建大型复杂应用
- 常见的画布应用性能问题和解决方法
- 提高画布应用性能的提示和最佳实践
- Power Apps 画布应用编码标准和指南
- Power Apps 画布应用编码标准和指南白皮书(请确保查看标题为优化以提升性能一节。)