JHenTai 中文文档 下载 App

断点续传与任务恢复机制

为什么能断点续传

逐图下载时,JHenTai 把每个画廊和每张图片的下载进度持久化到本地数据库(Drift SQLite)。应用关闭、意外崩溃、设备重启后再次打开,下载页面会自动恢复上次所有未完成的任务——从断点继续,不从头开始。

持久化了哪些状态

这些状态在数据库中实时更新,每完成一张图片就写一次记录。

应用重启后的恢复流程

  1. 应用启动 → DownloadService 初始化
  2. 从数据库读取所有状态为"下载中"或"暂停"的任务
  3. EHExecutor 按优先级重新排队
  4. 任务恢复执行,从每张图片已下载的字节数继续

恢复失败的情况

以下情况可能导致断点续传失效或需要重新下载:

原因处理方式
网络环境变了,EH 临时 CDN 返回的图片地址可能带 token 已过期应用检测到 token 失效后会自动重新请求,不需要用户操作
应用数据被清理(如清理存储权限或手动清除应用数据)数据库被清空,所有下载进度丢失
手动删除了下载目录里已有的图片文件JHenTai 检测到文件不存在会重新下载
画廊上传者上传了新版本应用会提示是否重新下载(见 上传者更新同步)

Archive Bot 下载的断点续传

Archive Bot 下载是单个大文件的 HTTP 下载——这个层面的断点续传由 HTTP Range 请求和下载工具处理。JHenTai 本身不单独处理 Archive Bot 文件的断点,但底层 HTTP 库(Dio)支持,所以效果与逐图下载的断点续传一致。

手动暂停与恢复

下载管理页面上每个任务都有暂停和继续按钮: