我目前正在开发Google新的"应用内更新"库的实现。
根据文档,我们可以向用户提示"灵活"或"即时"UI。在这两种情况下,它都将启动更新的下载(阻止或不阻止)。
如果在此下载过程中我杀死了我的应用程序并且他们在下载结束前重新启动它,那么当我要求"更新可用性"时,API 会UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS
给我答案。
该文档仅在立即更新的情况下提到此可用性,因此我们必须使用以下代码还原全屏 UI:
appUpdateManager.startUpdateFlowForResult(appUpdateInfo, IMMEDIATE, this, 1000)
问题是,当下载灵活更新时,我也有这种可用性,在这种情况下,我不想启动全屏下载 UI,因为它是一个灵活的更新......
有没有办法知道当 API 返回UpdateAvailability.DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS
作为可用性时,我们是处于灵活更新还是立即更新?
提前感谢您的帮助!
API 不会返回更新是作为即时流还是灵活流启动。
如果要确保恢复之前启动的相同流类型,您现在有 2 个选项:
- 重新运行您运行的相同逻辑,以决定最初启动哪种类型:如果逻辑是确定性的,则结果将是相同的,您将恢复相同类型的流
- 记住您显式启动的类型(保留此信息)
请注意,在恢复时选择错误的流类型不是问题:它们在内部的工作方式相同,因此您可以启动灵活的流并将其立即恢复,反之亦然,没有任何问题。
来源:我在 Play 核心 SDK 上工作