日期:2026-07-31
已完成应用侧修复:主页离开时仅解绑业务监听,不再直接停止 SDK 接收线程或清空 SDK 缓存。该变更避免 SDK 解析线程与页面生命周期并发写入 mCacheLen,阻断 dstPos=-29 崩溃路径,同时保持设置页红外控制命令继续复用原串口。
YoukateHardwareManager.java:监听器增加 volatile;pause() 只解绑业务监听,不修改 SDK 接收状态。YoukateHardwareManagerPauseTest.java:验证暂停保持 SDK 监听、缓存长度和封装层监听状态,同时解绑业务监听。docs/2026-07-31-pc681-receive-cache-race-fix.mddocs/2026-07-31-pc681-receive-cache-race-fix.html回归测试先在旧实现上按预期失败,失败点为旧 pause() 修改 SDK 监听状态;完成最小实现后,同一定向测试通过。
JAVA_HOME=$(/usr/libexec/java_home -v 1.8) \ ./gradlew --no-daemon :app:testDebugUnitTest :app:assembleDebug --console=plain
结果:BUILD SUCCESSFUL in 38s。
app/build/outputs/apk/debug/app-debug.apk。当前分支为 fun_tray_recognition_control。本次未执行暂存、提交、推送或分支切换;工作区原有布局修改和 output/ 内容未纳入本次改动。