搜索文档

输入关键词查找当前使用指南和维护文档。

Skip to content
中州鹅 · 维护文档文档目录

自定义 hosts 下载任务 ​

使用方法见更新检查器。本页说明启用自定义 hosts 后,任务如何跨页面关闭、进程重建和发布中断继续工作。

任务与页面分离 ​

Android 10 及以上使用配置的 hosts 映射直接下载时,由唯一 WorkManager 任务执行。 普通下载和较旧 Android 版本仍使用系统 DownloadManager。WorkManager 2.11.2 保留 Android 6 最低版本;默认启动初始化器已移除。 其数据库在更新功能需要时才按需打开,键盘启动不为它打开数据库。

更新页面只订阅持久化任务状态。关闭页面结束订阅,不取消任务。 入队和取消命令保持提交顺序,数据库操作在 IO 执行。重复开始保留正在运行的任务;已结束任务重试时创建新身份,旧结果不能覆盖新任务。

暂存与断点续传 ​

每个 UUID 独占一个不参与系统备份的暂存目录和文件锁。 存在强 ETag 时,使用 Range/If-Range 续传;缺少验证器或只有弱验证器时重新完整下载。 HTTP 200 会替换旧分片;验证器变化或 HTTP 416 会重新开始;格式非法的范围响应会使任务失败。

发布前检查大小和 Release 提供的可选 SHA-256。每份完整文件还会记录自身计算得到的摘要,用于恢复中断的发布过程。

传输上限为 512 MiB。空间检查同时计算剩余传输和发布副本,并为其他用户数据保留 32 MiB。 进度更新最多每秒一次。取消会关闭 HTTP 调用,并等待回调关闭文件,之后才释放锁或删除分片。

MediaStore 发布恢复 ​

文件完成校验、复制并 fsync 后,MediaStore 条目才结束 pending 状态。 待发布 URI 在复制前保存。重启后可通过 UUID 文件名恢复插入窗口,或通过自有 URI 和摘要恢复发布窗口;兼容 MediaStore 自动追加的文件名后缀。

清理只删除本任务持有的 pending 条目,保留已发布下载和其他应用的条目。 重新打开更新页面时,清理已结束或过期的私有暂存数据。

后台与重试边界 ​

前台进度、取消入口和完成通知不持有 Activity。 网络约束和指数退避由 WorkManager 管理,瞬时错误最多自动重试五次。Android 可以延后任务;强行停止应用后,后台执行要等再次打开应用才有机会继续。

持久性从入队提交完成开始计算,尚未提交的点击不构成持久任务。 断点续传还取决于服务端是否遵守强验证器。测试重建 worker、文件实例和界面订阅,不代表已经验证物理断电。

固定提交和回归证据见下载恢复审计。