Uninote
Uninote
用户根目录
brdr
common
programming
docs
tests
后端试题
问题讨论

同步文件阶段只读验证(2026-10-27)

行为

  • 同步状态与只读状态分开。连接、上传、下载和等待响应时恢复编辑及文件操作;同步按钮仍避免重复启动同一任务。
  • 后台 isolate 在本地文件阶段开始前请求主 isolate 授权。主 isolate 设置只读、等待已有用户操作、串行完成草稿保存,再允许后台访问文件。
  • 本地阶段结束后先刷新打开笔记,再解除只读;读取失败、网络失败和保存失败也会释放屏障,未保存草稿不被磁盘内容替换。
  • 上传操作保持不可变正文快照。网络期间的新修改在后续扫描发送;最后一轮扫描之后的修改留待下次同步。
  • 同步后的列表刷新在本地处理结束后进行,不把旧正文重新写回正在编辑的标签。
  • 同步中心、工具栏、正文、新建/移动/删除、拍照和录音入口使用文件阶段状态;同步图标继续表示整个任务。
  • 删除或移除仓库的确认可在网络阶段发起,真正删除等待本轮任务完成,避免后续同步重建目录。
  • 历史缓存损坏且同步仍在进行时,差异查询报告错误并保留缓存,避免联网重建排在当前同步后又反向阻塞文件阶段;同步完成后可重试。

验证

  • 全量 flutter test:571 项通过。
  • 真实 HTTP 服务和生产后台 isolate:连接期间编辑、授权前等待已有操作、上传期间继续编辑并新建文件、下载期间新编辑与远端冲突、HTTP 401 后保存新编辑及解除只读。
  • 协调器:同步完成后的远端列表交换期间继续输入,不被旧磁盘快照覆盖。
  • 同步中心:网络期间可克隆,文件阶段禁用克隆;同步按钮仍避免重复同步。
  • 保留现有草稿保存、库切换、退出登录、冲突副本和断线恢复回归。
  • 全量后移除无用的整轮切库屏障字段,相关协调器和真实 worker 测试 19 项通过;最后的标签关闭/固定保护回归 6 项通过。
  • 最终 flutter analyze 仅保留既有 test/mp3/mp3_refresh_view_test.dart:37 大括号 info,无新增问题。
  • 使用项目规定的 Java socket 临时目录后,flutter build apk --debug --target-platform android-arm64,android-x64 构建成功。

限制

  • 本轮未在真实手机或模拟器重新测量耗时与帧率;此前性能报告对应 aa9f1aa,不能视为本次阶段切换的性能结果。
  • 安装更新后的 APK 后需要重启应用。

2026-10-27-file-locate

2026-10-27-sync-performance

点赞(0) 阅读(13) 举报
目录
标题