假设我们使用sync()方法来安装更新。如果在安装更新时关闭手机,应用程序是否可以正常重新启动?此外,插件会自动尝试再次安装更新吗?
环境: React-Native 0.24(Android)
答案 0 :(得分:2)
在幕后,sync
方法执行三个单独的步骤,以使正在运行的应用程序保持最新状态:
检查服务器上是否有可用的更新。如果手机在此检查过程中被关闭,那么应用程序将完全正常,并且当手机重新启动时,此检查将再次发生(当调用sync
时)并且具有相同的响应它以前会有。
下载可用更新。如果手机在此过程中关闭,则应用程序将完全正常。重新启动手机后,对sync
的调用将发现不完整的更新,将其删除并重新下载。我们目前不支持恢复以前启动的更新下载,但我们确保不会实际更新,除非它已完成并通过完整性检查(例如,我们是否获得了我们预期的正确内容)。
安装已下载的更新。下载更新后,它实际上是孤立的"在磁盘上,并且在CodePush运行时"安装"之前实际上不可用。它,这意味着它更新了一个内部元数据文件,该文件指示应该在后续应用程序启动时运行的更新。根据指定的安装模式,此步骤可能还需要以编程方式重新启动应用程序。如果手机在此过程中关闭,那么应用程序就可以了。下载的更新将继续“孤立”,并且下次应用程序启动时,它将运行以前的版本,随后对sync
的调用将发现更新并重新下载再次。由于安装步骤受到干扰将是一个边缘情况,我们目前不支持检测磁盘上先前下载和完整的更新,我们可以简单地安装。我们会再次重新下载,这要归功于服务器对差异更新的支持,希望只是几个文件。随着时间的推移,我希望看到我们优化这个用例,但我们还没有看到它代表一个问题。
如果您有任何其他问题,或者我没有完全回答您的问题,请告诉我。我们已经做了很多工作来确保React Native插件能够抵御这些意外中断,并且我希望能够听到更多关于它的反馈!