Skip to content

fix(download): 修复归档下载器丢下载或放错文件的问题,并处理 dataSync 超时 - #175

Merged
HicirTech merged 10 commits into
mainfrom
Fix--archiver-downloader
Oct 3, 2026
Merged

HicirTech merged 10 commits into
mainfrom
Fix--archiver-downloader

Conversation

@HicirTech

Copy link
Copy Markdown
Owner
  • 一个归档任务结束时,只在没有其他任务还在下载时才停前台服务;暂停中的任务不算
  • 归档、手机下载、SMB 三个 dataSync 前台服务都处理 Android 15 的 onTimeout:暂停全部任务(归档之后用 Range 续传),停前台并 stopSelf;手机下载等同于通知里的「全部停止」
  • 归档服务和 SMB 服务的 startForeground 被拒时不再崩溃(时长用完后再启动会抛 ForegroundServiceStartNotAllowedException),被拒期间也不留下停服务后撤不掉的常驻通知
  • 没有「所有文件访问」权限时在应用缓存里解压并导入;导入结束(成功或最终失败)后删掉应用缓存里的 zip,共享存储上的 zip 照旧保留
  • 已标记为网络存储目标的画廊,归档也导入到手机,不再失败
  • zip 文件名改为 <标题>_<gid>.zip,同名画廊不再互相删除或续传对方的文件;导入完成的提示仍显示画廊标题。不迁移旧文件(旧的 <标题>.zip 可能属于另一本同名画廊),2.0.2.4-hl.1 和 2.0.2.5-hl.1 里暂停着的归档下载更新后从头下载

验证:LXC 上 CI 同款构建通过,单测 406 个 0 失败,release 构建的 lintVital 通过;新增测试都做过变异验证,19 个变异体全部被抓到。平板(SM-X926B,Android 16)上把 dataSync 时长临时调成 3 秒:手机下载和归档下载在后台都被系统超时并停下,没有崩溃,归档暂停后用 Range 接着下完;超时后重启服务时 startForeground 确实抛了 Time limit already exhausted,被兜住。两本同名画廊在后台同时下归档,zip 各自命名、大小与单独下载一致,第一本下完时前台服务一直保持到第二本结束。堵住外部 archiver/temp 目录后,zip 落在应用缓存、导入成功、zip 被删掉。

未验证:没有真的撤销「所有文件访问」(这台平板的下载位置依赖该权限,撤掉后所有下载都会失败),用堵住两个目录代替;SMB 服务的 onTimeout 只有单测,设备上会写进真实的库。

Closes #166

@HicirTech
HicirTech merged commit 346729c into main Oct 3, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

fix(download): 上游 2.0.2.4 带入的归档下载器,几处会丢下载或放错文件的地方

1 participant