0

假设我们使用 sync() 方法来安装更新。如果在安装更新的过程中手机关机,应用能否正常重启?另外,插件会自动尝试再次安装更新吗?

环境:React-Native 0.24 (Android)

4

1 回答 1

3

在幕后,该sync方法执行三个单独的步骤以使正在运行的应用程序保持最新:

  1. 检查服务器上是否有可用的更新。如果手机在此检查过程中关闭,则应用程序将完全正常,并且当手机重新启动时,此检查将再次发生(当sync被调用时)并具有与以前相同的响应。

  2. 下载可用更新。如果在此过程中关闭手机,则该应用程序将完全正常。当手机重新启动时,调用sync会发现更新不完整,将其删除并重新下载。我们目前不支持恢复之前开始的更新下载,但我们确实确保不会实际运行任何更新,除非更新完成并通过完整性检查(例如,我们是否获得了预期的正确内容)。

  3. 安装已下载的更新。下载更新后,它实际上是在磁盘上“孤立”的,并且在 CodePush 运行时“安装”它之前实际上并不可用,这意味着它更新了一个内部元数据文件,该文件指示应该在后续运行的更新应用程序启动。根据指定的安装模式,此步骤可能还需要以编程方式重新启动应用程序。如果手机在此过程中关闭,那么该应用程序就可以了。下载的更新会继续“孤立”,下次应用启动时会运行之前的版本,后续调用sync会发现更新并重新下载。由于安装步骤受到干扰是一种极端情况,我们目前不支持检测磁盘上先前下载和完整的更新,我们可以简单地安装。我们将再次重新下载它,这要归功于服务器对差异更新的支持,希望只是几个文件。随着时间的推移,我希望看到我们优化这个用例,但我们还没有看到它代表一个问题。

如果您有任何其他问题,或者我没有完全回答您的问题,请告诉我。我们已经做了很多工作来确保 React Native 插件能够抵御这些意外中断,我很想听到更多关于它的反馈!

于 2016-05-10T17:35:04.453 回答