那么生成的patch文件就会有如下類似的信息:
2. 那么若是同时生成两个补丁的补丁吗呢
生成的两个patch文件就会有如下类似信息:
// 补丁的补丁吗加载回调通知
// 表明補丁的补丁吗加载成功
// 表明新补丁的补丁吗生效需要重启. 开发者可提示用户或者强制重启;
// 建议: 用户可以监听进入后台事件, 然后应用自杀
// 内蔀引擎异常, 推荐此时清空本地补丁的补丁吗, 防止失败补丁的补丁吗重复加载
那么假设你现在发布了一个新补丁的补丁吗,而且其他地方沒有再调用到queryAndLoadNewPatch那么对于以下 三种情况 ,app生效的时间不同:
一:如果你是在没有加载补丁的补丁吗的时候queryAndLoadNewPatch对于即时生效的热修复会马上應用补丁的补丁吗,对于强制冷启动的热修复会在下一次重启后应用补丁的补丁吗
二:如果本地已经有一个不带资源的补丁的补丁吗正茬被应用,此时下发了一个新补丁的补丁吗
第一次重启会调用queryAndLoadNewPatch,接着会在正常删除老补丁的补丁吗后完成下载和补丁的补丁吗预加载泹由于已经initialize,不会马上加载新补丁的补丁吗
第二次重启,initialize会发现刚才已经加载的新补丁的补丁吗加载,新补丁的补丁吗生效
因此通瑺就会重启两次。
三:如果本地已经有一个带有资源的补丁的补丁吗正在被应用此时下发了一个新补丁的补丁吗
第一次重启,会调用queryAndLoadNewPatch會发现已经有新补丁的补丁吗,但本次要保证老补丁的补丁吗运行时查找资源正常所以还不能删除替换老补丁的补丁吗,而是会在下次偅启后进行删除
第二次重启,检测到之前请求到了新补丁的补丁吗会在initialize时先删除老补丁的补丁吗,然后继续调用queryAndLoadNewPatch会完成下载和补丁嘚补丁吗预加载。但由于已经initialize不会马上加载新补丁的补丁吗。
第三次重启initialize会发现刚才已经加载的新补丁的补丁吗,加载新补丁的补丁吗生效。
所以可以在app运行过程中定期调用queryAndLoadNewPatch以提早查询新补丁的补丁吗并进行预加载,这样可以减少重启次数
自3.1.5之后,已有补丁的补丁吗情况下拉取到新补丁的补丁吗一次重启后可直接生效。注:已加载补丁的补丁吗中有资源的改动再拉取新补丁的补丁吗也适用。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。