搜索文档

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

Skip to content
中州鹅 · 历史记录与验证证据文档目录

结论、提交、测试结果与安装包均对应文中记录时点。日常操作以现行维护手册为准。

输入法切换后的旧布局任务崩溃 · 2026-10-25 ​

设备发现 ​

在 b2c4631a x86_64 Debug 的 API 35 AOSP 模拟器上,切到 AOSP 输入法再切回 Rime 直连版时,旧服务的排队布局回调触发主线程崩溃。原始异常栈。异常类保留历史 Fcitx 命名,当前后端仍是 librime 直连。

崩溃点为 KeyboardWindow.switchLayout 的 Main Executor 回调;服务已断开后,回调仍读取 inputMethodEntryCached,抛出 FcitxDisconnectedException。模拟器无 KVM,慢 UI 扩大了回调与服务销毁交错的窗口;异常栈对应实际执行,不将绝对耗时外推真机。

修复 ​

提交 1c8a7d04 将布局切换、字体完成和延迟字体刷新统一交给 Service 生命周期下的主线程任务;执行前核对所属 InputView 仍是当前视图。服务销毁后自动取消,主题换视图后丢弃旧任务;字体完成闭包不再在旧依赖作用域中查找服务。

仍保留排队和 FIFO 顺序,未以同步执行来绕过问题。未把候选长按菜单或其他异步回调一并宣称修复。

验证 ​

新增 API 23/28 共 16 个测试执行:排队与 FIFO、排队后销毁、销毁后字体完成、视图替换、视图移除、新旧视图交错、同视图临时窗口变化及后台线程迟到完成。完整 770 项 JVM 测试通过,失败/错误/跳过均为 0;本轮四批新增 76 个执行。JVM 汇总。

修复后设备回归 ​

已安装并核对 1c8a7d04 x86_64 Debug,APK SHA-256、环境和操作见来源记录,APK 依赖核验,设备数据。

清空该测试模拟器的 crash 缓冲区后,执行 3 轮 AOSP→Rime 输入法切换;每轮重新聚焦宿主 A 并调用 restartInput。最后等待键盘实际显示后,通过触屏依次点击 N、I 和第一项候选“你”。宿主文件结果 A=你、B 为空,记录恰好一次 commit。结束时应用进程仍在,crash 缓冲区为空,未再次出现旧布局回调崩溃。

当前版本键盘已显示触屏输入 ni 后出现候选点选后 A 上屏你

该 3 轮操作是设备回归,不代表长期压力测试或真机验收。此前英文模式提示断言异常仍待查,本轮通过不覆盖它。模拟器已保留当前 Rime 直连版输入法和测试宿主,不依赖不可用的快照恢复。