识别页主线程卡顿修复记录

现象与证据

目标设备在识别页出现明显卡顿。排查到的 ANR 主线程栈为:DishRecognitionActivity.updateAutoPayReadyState → AiSdkManager.readStoredRuntimeConfig → YingeoAiSDKBase.isSupportTurboMode → BufferedReader.readLine / FileInputStream.read。识别结果处理反复读取完整运行配置,而完整配置解析会查询 SDK Turbo 能力;该查询在设备上发生阻塞文件 I/O。日志同时出现大量跳帧。

本次修复

  1. AiSdkManager 增加仅解析已存储业务模式的 readStoredBusinessMode(),不读取模型和速度,也不调用 SDK 能力探测。
  2. 识别页的商品匹配、计价准入、自动支付就绪判断,以及学习入口判断,改用轻量业务模式读取。
  3. SDK 初始化与重新配置继续使用原有的完整运行配置读取,Turbo 能力判定和模式设置语义不变。
  4. 为独立业务模式解析增加单元测试,覆盖餐盘、菜品和缺失值。

验证

边界与待复测

尚未安装新 APK,因此不能宣称真机卡顿已经消失。目标设备仍需在相同餐具识别画面连续运行,观察主线程跳帧、ANR、GC 频率和支付状态。摄像头每帧分配 NV21 数组与识别框重建是额外性能压力,但本次 ANR 堆栈未将它们指认为主线程阻塞点;本次不调整摄像头帧所有权和识别时序,以免引入帧数据复用或丢帧风险。若新包仍有轻微掉帧,再用真机数据定位该部分。

文件与操作