 mazengfeiandClaude Fable 5
|
5ffdb3ea64
|
feat(log): 增加日志定期清理机制,防止长期运行日志无限累加
- FileLogger 新增过期清理(保留7天)及单文件100MB写入上限(适配异步写入版)
- CrashHandler 激活崩溃日志清理并补充异常保护
- App 启动清理 + 运行中每24小时定时清理,覆盖设备长期不断电场景
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-31 15:08:22 +08:00 |
|
mazengfei
|
8e8ab6936c
|
fix(net): 优化 HttpException 错误消息解析逻辑
- 添加从 HttpException 错误响应体解析后台业务 msg 的扩展方法
- 优先使用后台返回的业务 msg,失败时回退到 HTTP 状态短语
- 处理解析过程中可能出现的异常,确保安全降级
- 添加相关注释说明业务错误消息提取的设计意图
|
2026-07-28 19:45:00 +08:00 |
|
mazengfei
|
23d211bfdb
|
fix(shelf): 实现负漂移抑制以提高重量显示准确性
- 在ShelfV3Activity中针对-5克以内的负读数做归零处理,避免误导显示
- 修改获取重量逻辑,保证显示重量与真实重量区分
- 在ShelfV3Adapter中对空秤零点附近的小负重量做归零处理
- 优化重量单位显示逻辑,根据负漂移抑制后的值显示克或千克
- 更新local.properties中SDK路径配置
|
2026-07-13 18:26:16 +08:00 |
|
mazengfei
|
7ab8e09a46
|
refactor(scale): 优化串口数据处理逻辑和自动应答机制
- 在串口数据读取中增加帧拼装与解析,统一自动应答发送
- 实现心跳日志降频,减少重复日志,避免主线程无效计算
- 将数据回调分派至主线程,确保线程安全
- 缓存时间格式化器,避免重复创建对象
- 增加秤重数据变更判断,避免无变化时刷新UI和日志
- 异步优化文件日志写入,使用协程通道和单线程写入,避免多线程SimpleDateFormat竞争
- 修复文件路径和上下文使用,防止Activity内存泄漏
- 精简部分注释和代码未使用段落,提高代码清晰度
|
2026-07-03 14:57:25 +08:00 |
|
mazengfei
|
1e44cd2765
|
fix(scale): 优化秤数据同步及格口显示顺序
- 增加秤号到列表索引的映射,提升心跳回调数据定位效率
- 调整重量数据处理逻辑,减少索引查找开销
- 按设备物理布局重排格口列表,解决多列设备显示错乱问题
- 定义同步间隔和首次同步延迟常量,统一定时任务配置
- 调整重量上报心跳间隔为1秒,提升秤数据实时性
- 清空列表时同步清理秤号映射,防止脏数据影响展示
- 优化空格口清理逻辑,改用映射位置快速更新对应项
|
2026-07-02 17:58:46 +08:00 |
|
lvmeng
|
3757b851be
|
refactor(home): 移除旧版首页和货架相关界面及代码
- 删除 activity_home.xml 布局文件
- 删除 activity_shelf.xml 布局文件
- 删除 activity_shelf_v2.xml 布局文件
- 从 AndroidManifest.xml 中移除 HomeActivity 和 ShelfActivity 等旧页面声明
- 删除 ApiService.kt 网络接口文件
- 删除 ApiServiceV2.kt 网络接口文件
- 删除 CabinetInitResult.kt 数据模型文件
- 删除 CleanPackageAdapter.kt 适配器文件
- 删除 CleanPackageOption.kt 数据模型文件
- 删除 Constant.kt 常量定义文件
- 删除 DeviceConfigInfo.kt 数据模型文件
- 删除 DrawableExt.kt 扩展工具文件
- 删除 F2C.kt 温度转换工具文件
- 删除 GoodsModel.kt 数据模型文件
- 删除 GoodsRecord.kt 数据模型文件
- 删除 GridLayoutTool.kt 布局工具文件
- 删除 HexUtils.java 十六进制工具类
|
2026-06-30 11:27:29 +08:00 |
|
lvmeng
|
947afd06e8
|
fix(dialog): 修复Chip选择对话框的标题显示和布局问题
- 修改对话框确认按钮提示文本,使用动态标题变量替代固定文本
- 移除手动设置Chip的LayoutParams,改为直接使用addView方法
- 设置ChipGroup为多行显示以支持更多选项
- 调整布局文件中ChipGroup的宽度为wrap_content并居中对齐
- 添加水平和垂直间距属性以改善Chip排列效果
- 修正ShelfV3Activity中传递给对话框的标题文本格式
|
2026-06-26 16:43:45 +08:00 |
|
lvmeng
|
5412f0b6b9
|
feat(shelf): 更新货架界面和菜品分类功能
- 重命名tvFoodType为tvVegTypeName以统一命名规范
- 新增bg_pressed.xml选择器用于按钮按下效果
- 在ChipSelectDialog中添加必选验证和改进布局参数
- 扩展HomeV3Activity传递菜品名称和蔬菜类型信息
- 调整list_item_shelf_v3.xml布局尺寸和权重配置
- 新增tvFoodType显示菜品分类并调整字体间距
- 更新ShelfV3Activity处理菜品分类数据传递和显示
- 修改SlotModel数据结构支持蔬菜类型ID和名称字段
- 优化适配器中菜品分类文本显示逻辑和颜色设置
|
2026-06-26 16:24:53 +08:00 |
|
lvmeng
|
0e0c2fe47b
|
feat(shelf): 添加净菜毛菜搜索和分类选择功能
- 新增 tvFoodType TextView 显示食品分类
- 将搜索框可见性从 gone 改为 visible
- 添加 FoodItem 和 FoodType 数据模型
- 添加 SearchFoodRequest 请求模型
- 在 ApiServiceV3 中新增 searchFood 接口
- 在 NetViewModelV3 中新增 searchFood 方法
- 修改 PutSlotRequest 模型字段为可空类型并添加 vegTypeId
- 更新 HomeV3Activity 中行列计算逻辑
- 缩短商品数据同步间隔时间
- 修改 InitActivity 中的基础URL配置
- 将 PendingInboundAdapter 适配器改为使用 FoodItem 类型
- 在 ShelfV3Activity 中实现净菜分类选择对话框功能
- 添加 ChipSelectDialog 自定义对话框组件
- 添加 chip 相关的颜色资源文件
- 实现搜索功能替换原有的待入库查询逻辑
|
2026-06-26 14:57:07 +08:00 |
|
 lvmengandClaude Opus 4.7
|
84634f843d
|
refactor(home): 用FlexboxLayoutManager替换GridLayoutManager,支持动态行列布局
FlexboxLayoutManager(COLUMN+WRAP)天然列优先排列,数据无需重排。
item宽高在拿到接口行列数后直接计算,适配任意rows×cols配置。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-26 09:17:06 +08:00 |
|
lvmeng
|
419e08c0e0
|
fix(shelf): 解决货架模型重量数据同步问题
- 在HomeV3Activity中添加重量值赋值逻辑确保模型数据完整
- 临时注释PendingInboundItem中的重量赋值避免数据冲突
- 修复货架适配器数据更新时重量信息丢失的问题
|
2026-06-25 14:48:04 +08:00 |
|
lvmeng
|
70f4146509
|
fix(init): 移除测试设备号硬编码
- 注释掉测试用的固定设备号赋值代码
- 确保使用实际的设备唯一标识符获取逻辑
- 保留设备号获取的日志记录功能
|
2026-06-25 14:10:58 +08:00 |
|
lvmeng
|
45bd586e7a
|
refactor(model): 更新PendingInboundItem数据模型字段类型
- 将vegTypeId从Int类型改为Long?可空类型,默认值为null
- 将vegTypeName从String类型改为String?可空类型,默认值为null
- 将spec从String类型改为String?可空类型,默认值为null
- 所有修改的字段都设置了默认值以保持向后兼容性
|
2026-06-25 11:31:14 +08:00 |
|
lvmeng
|
a78eaf7233
|
feat(app): 集成V3货柜管理功能
- 将应用包名从com.shuwei.intelligent.shelves迁移至com.sw.scalefusion.shelf
- 更新AndroidManifest.xml中的Activity声明路径以匹配新包名
- 在InitActivity中同步更新包名引用及依赖导入
- 修改GridLayoutTool工具类适配V3货柜布局排序逻辑
- 新增ApiResponse和BaseRepository统一网络响应处理
- 添加V3 API服务定义支持毛菜柜/净菜柜功能
- 新增HomeV3Activity和ShelfV3Activity实现新版货柜界面
- 集成API文档定义的货柜初始化、入柜、同步重量等核心功能
- 添加SlotModel等数据模型支持V3货柜操作
- 更新ProtocolConstants增加设备类型映射配置
- 重构网络管理层实现V2/V3接口实例分离管理
|
2026-06-24 17:39:44 +08:00 |
|
mazengfei
|
8aaba07cb6
|
perf(home): 调整货架商品同步到服务器的时间间隔
- 将定时任务的执行间隔从5秒调整为2分钟
- 保持初始延迟时间不变(10秒)
- 优化服务器同步频率以减少资源消耗
|
2026-06-04 18:10:17 +08:00 |
|
mazengfei
|
4f1a9dd0a1
|
refactor(home): 重构货架重量数据模型和显示逻辑
- 将实际重量计算统一到weight字段,移除actualQty和totalWeightG字段
- 修改HomeV2Activity中的重量数据处理逻辑,统一转换为千克单位
- 更新ShelfV2Activity中重量显示格式,优化单位转换逻辑
- 调整ShelfV2Adapter中重量显示逻辑,统一使用weight字段进行展示
- 在日志记录中增加温度信息输出
- 移除废弃的条件判断逻辑,简化代码结构
|
2026-06-04 17:28:23 +08:00 |
|
lvmeng
|
694e20023a
|
refactor(layout): 优化网格布局工具和货架界面排序逻辑
- 新增 getLayoutManagerV2 方法用于创建垂直方向的网格布局管理器
- 修改 initListSortV2 方法支持动态行列参数控制排序逻辑
- 添加 submitListSortV2 方法用于提交时按槽位号排序
- 重构 HomeV2Activity 中的 UI 更新逻辑,支持动态行列配置
- 修复 RecyclerView 初始化时机问题,避免重复设置适配器
- 优化 ShelfV2Activity 中的清空操作,添加加载提示和自动关闭功能
- 完善槽位状态管理,支持空置和存放中状态标识
|
2026-06-04 14:32:08 +08:00 |
|
mazengfei
|
ac17fca325
|
fix(home): 解决格口数据更新和权重计算问题
- 将超时时间从5分钟调整为1分钟
- 优化格口数据匹配逻辑,提高查找效率
- 根据物品类型分别处理重量数据存储
- 添加JSON序列化支持用于调试日志
- 修复itemType字段类型不一致问题
- 优化重量显示计算逻辑并简化条件判断
- 修复代码格式化问题
|
2026-06-04 11:19:25 +08:00 |
|
lvmeng
|
4b8e5f84e6
|
refactor(net): 重构网络请求配置以支持动态域名切换
- 在 ApiServiceV2 中使用 @Url 注解实现动态 URL 配置
- 添加 DynamicBaseUrlInterceptor 拦截器用于实时替换基础 URL
- 更新环境切换对话框中的环境名称和对应的 URL 映射关系
- 修改 UrlConfig 中的常量为变量并包含完整的基础 URL 路径
- 在 HttpManager 中为两个 API 服务实例都添加动态域名拦截器
- 调整环境配置常量定义顺序以匹配新的环境切换逻辑
|
2026-06-03 16:30:05 +08:00 |
|
lvmeng
|
d6ba6cf527
|
feat(model): 更新货柜初始化结果和净菜包选项数据结构
- 在 CabinetInitResult 中添加 horizontalRows 和 verticalCount 字段
- 为 CleanPackageOption 和 MealPackageOption 添加 orderNo、foodId、needCount、needQtyKg 等字段
- 修改 CleanPackageOption 的 itemType 为 1,MealPackageOption 的 itemType 为 2
- 在 ShelfModelV2 中添加 cleanOrderNo 字段用于关联净菜订单号
- 更新 SyncItem 数据结构,添加 cleanOrderNo 字段
- 移除 HomeV2Activity 中的测试代码和硬编码逻辑
- 修改格口编号显示格式,补零显示两位数
- 调整定时任务执行频率,缩短同步间隔时间
|
2026-05-28 17:39:04 +08:00 |
|
lvmeng
|
4408acfca4
|
refactor(net): 注释掉设备令牌和配置相关功能
- 注释掉 getDeviceToken 方法及其相关逻辑
- 注释掉 getDeviceConfig 方法及其相关逻辑
- 注释掉 getAccessToken 方法及其相关逻辑
- 保留了 UiState 相关的状态流定义
- 维持了其他网络请求方法的正常功能
|
2026-05-27 19:55:02 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
b0739605b9
|
feat(v2): 新增 V2 货柜接口层、页面及数据同步功能
- 新增 ApiServiceV2 / NetViewModelV2 承载 v1.1 接口(初始化、净菜包/餐品净菜包选项、数据同步)
- 新增 CabinetRequestInterceptor 独立 Retrofit 实例
- 新增 HomeV2Activity + ShelfV2Activity 及对应布局
- 新增 ShelfV2Adapter / CleanPackageAdapter / MealPackageAdapter
- 新增 ShelfModelV2 / CabinetInitResult / SyncBody / SyncItem / CleanPackageOption / MealPackageOption 数据模型
- HomeV2Activity 实现 syncShelfGoodsToServer 定时同步逻辑
- GridLayoutTool 新增 initListSortV2 支持 ShelfModelV2 排序
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-27 19:54:06 +08:00 |
|
lvmeng
|
d524da1af3
|
refactor(net): 注释掉设备token和配置信息相关API接口
- 将getDeviceToken接口注释掉
- 将getDeviceInfo接口注释掉
- 将getAccessToken接口注释掉
- 保留了原有的文档注释
- 维持了文件结构完整性
|
2026-05-27 13:51:23 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
967d06ce1e
|
docs(serial): 更新 ScaleManager 类注释
- 同步典型用法为当前链式 start() 写法
- 职责说明补充 Channel 发送队列描述
- release() 说明补充"清空队列"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 15:47:56 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
d5c6ec92d4
|
refactor(serial): sendCmd 改用 Channel 保证串口写入顺序
- 新增 sendChannel(无界 Channel)作为发送队列
- openPort() 启动单一消费者协程顺序消费队列,避免并发写串口
- sendCmd() 改为 trySend() 入队,不再每次创建新协程
- release() 关闭 Channel,确保消费者协程正常退出
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 15:02:15 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
7b28eb03d6
|
refactor(serial): 清理废弃类并复用现有工具函数
- 删除 SerialProtocolHandler(旧版协议解析器,已无任何引用)
- 删除 SerialFrameParser(仅被 SerialProtocolHandler 使用,随其废弃)
- ScaleFrameParser.parseFrame 改用项目已有的 String.hexToBytes(),移除重复的私有 hexToByteArray()
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 15:00:08 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
4d545ceb46
|
refactor(serial): 将 SerialPortManager 合并到 ScaleManager
- 删除 SerialPortManager,串口生命周期(open/startReceive/release)内嵌到 ScaleManager
- ScaleManager 改为 object 单例,去除 .instance 调用
- init() 简化为只接收 activateCode,去除 deviceId + activateMap 查表逻辑
- 新增 start(preHook) 方法合并 open + startReceive,支持链式调用到末尾
- BaseActivity.sendCmd 改为直接调用 ScaleManager.sendCmd
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-05-21 14:59:19 +08:00 |
|
 mazengfeiandClaude Sonnet 4.6
|
0eede1059c
|
feat(serial): 封装 ScaleManager 替换现有秤功能逻辑
新增 SDK 核心类:
- ScaleProtocolConstants:协议常量(命令字节、帧偏移)
- ScaleFrameParser:分片拼装、帧解析、BCD重量解析(修复旧代码 hex 误用问题)
- ScaleFrame / ScaleWeight / HeartbeatData / StatusData:数据模型
- ScaleManager:单例入口,支持链式回调注册、自动应答、指令构建
- ScaleFrameParserTest:基于实际抓包数据的单元测试
业务层替换:
- HomeActivity:移除 SerialProtocolHandler/SerialFrameParser,改用 ScaleManager 回调
- BaseActivity:sendCmd() 保持调用 SerialPortManager,与 ScaleManager.sendAction 独立
- ShelfActivity:秤置零、获取状态指令改用 ScaleManager 构建方法
Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
|
2026-05-21 13:54:02 +08:00 |
|
lvmeng
|
8145eb588b
|
refactor(serial): 将串口配置常量重命名为大写格式
- 将 portName 常量重命名为 PORT_NAME
- 将 baudRate 常量重命名为 BAUD_RATE
- 更新代码中对这些常量的引用以使用新的命名约定
- 保持串口通信功能完全不变
|
2026-05-21 09:01:27 +08:00 |
|
mazengfei
|
c91d5656aa
|
修改旧版设备秤数量导致数据显示不准的问题
|
2026-05-20 16:50:53 +08:00 |
|
mazengfei
|
532b22a5c6
|
设备支持3列显示,统一处理显示和提交数据顺序
|
2026-05-20 15:36:28 +08:00 |
|
mazengfei
|
e9d04bfb70
|
优化启动页面样式
|
2026-04-28 16:52:54 +08:00 |
|
mazengfei
|
afba5220b3
|
首页设置禁止返回按钮
|
2026-04-28 16:41:21 +08:00 |
|
lvmeng
|
4ace12c6c7
|
style(ui): 调整加载动画尺寸并替换为矢量资源
- 将加载动画ImageView尺寸从160dp调整为120dp
- 替换loading_spinner为新的loading矢量资源
- 添加loading.xml矢量动画资源文件
- 注释掉HomeActivity中的临时报告对话框逻辑
- 简化HomeActivity中的RespData类型转换代码
|
2026-04-28 15:37:47 +08:00 |
|
mazengfei
|
ee36869003
|
优化
|
2026-04-07 17:19:12 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
c23c215941
|
fix: 修复 noDataWatchdogTask 潜在的内存泄漏问题
在 Runnable 中添加生命周期检查,防止 Activity 销毁后任务继续执行。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 17:58:22 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
3d67dd2c2d
|
refactor: 优化货架列表转换逻辑并支持奇数长度处理
- 移除 subList 创建,直接通过索引访问元素
- 修复奇数长度列表的处理逻辑
- 保持单次循环,提升性能
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 17:53:00 +08:00 |
|
 mazengfeiandClaude Sonnet 4.6
|
133f309d4b
|
refactor: 统一时钟管理并优化状态栏显示逻辑
- 在 BaseActivity 中实现统一的时钟管理机制,避免各子类重复实现
- LogActivity 和 ShelfActivity 覆写 onClockTick() 自定义状态栏显示
- HomeActivity 移除重复的时间更新逻辑,启用右侧状态栏菜单
- 提取协议常量到 ProtocolConstants,提高代码可维护性
- 优化开锁逻辑判断,改为基于 deviceId 的动态判断
- 新增右侧状态栏弹出菜单布局文件
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 17:07:41 +08:00 |
|
 mazengfeiandClaude Sonnet 4.6
|
3e5c7c6caa
|
refactor(HomeActivity): 修复内存泄漏并优化错误处理
1. 修复内存泄漏问题
- 在 onDestroy 中清理所有 Handler 回调
- 在 onDestroy 中释放 Dialog 引用
2. 增强类型安全
- updateUI 中增加类型检查和日志
- updateOverdueState 中增加完整的类型检查
3. 优化串口异常处理
- 串口数据处理异常时向用户提示
4. 消除代码重复
- 删除冗余的 saveShelfGoodsList 方法
- 定时任务直接调用 syncShelfGoodsToServer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 14:19:45 +08:00 |
|
 mazengfeiandClaude Sonnet 4.6
|
04fe3ec2c1
|
refactor: 全面重构 HomeActivity 架构并修复多项 Bug
- 新增 SerialProtocolHandler 类,将串口协议解析逻辑从 HomeActivity 剥离
- ProtocolConstants 补充命令码常量(CMD_*)及帧解析偏移常量
- 修复 NetViewModel.getDeviceConfig 更新错误 StateFlow 的 Bug
- 修复 getWeightInfo 中 toInt() 整数溢出崩溃风险,改用 toLongOrNull(16)
- 升级废弃的 getSerializableExtra,使用 Build.VERSION.SDK_INT 版本分支
- BaseActivity 提取 onUserInactive() 虚方法,消除对子类 HomeActivity 的直接引用
- 修复 BaseActivity 中错误的 LIGHT_OPEN/CLOSE 导入(改从 ProtocolConstants 导入)
- repeatOnLifecycle 由 CREATED 改为 STARTED,避免 UI 不可见时无效更新
- updateOverdueState 从回调风格改为 StateFlow,与项目其他接口保持一致
- 提取 syncShelfGoodsToServer() 消除重复的 ShelfBody 构建逻辑
- 清理 NetViewModel 和 BaseActivity 中大段注释死代码
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 11:26:05 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
9a795b9710
|
feat(HomeActivity): 新增串口无数据超时提示弹窗
超过5分钟未收到串口数据时,自动弹窗提示用户考虑断电重启设备;
收到新数据后自动关闭弹窗并重置计时。
同步提交串口协议常量(ProtocolConstants)与帧解析器(SerialFrameParser)重构代码。
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-04-01 10:18:00 +08:00 |
|
mazengfei
|
fff6a2a3b3
|
配置生产域名
|
2026-03-31 19:16:56 +08:00 |
|
lvmeng
|
3b79f6d6aa
|
feat(config): 实现应用基础URL配置管理与环境切换功能
- 引入GlobalData对象统一管理应用基础URL配置
- 添加TEST/UAT/PROD三套环境切换弹窗功能
- 在BaseActivity中集成双击右上角状态栏显示环境切换对话框
- 将网络请求配置从App.configUrl迁移至GlobalData.appBaseUrl
- 扩展SpTool工具类支持baseUrl本地存储
- 增加HTTP连接和写入超时时间至30秒
- 更新构建配置启用BuildConfig支持
- 添加环境切换相关UI资源文件和样式定义
|
2026-03-31 14:06:04 +08:00 |
|
lvmeng
|
76b67b545d
|
Merge remote-tracking branch 'origin/dev_优化_基于分支代码备份'
|
2026-03-31 10:58:32 +08:00 |
|
lvmeng
|
3bd60990b9
|
Revert "重构 HomeActivity:修复多项稳定性与架构问题"
This reverts commit 85903eb646.
|
2026-03-31 10:57:46 +08:00 |
|
lvmeng
|
a116c4fc6c
|
Revert "重构:拆分 HomeActivity 职责,分层解耦串口与业务逻辑"
This reverts commit e6cfc4dff2.
|
2026-03-31 10:57:40 +08:00 |
|
mazengfei
|
40cd27fa7b
|
增加左上角点击关闭页面,增加启动网络检测和连接功能,删除手机端测试布局;
|
2026-03-30 11:18:11 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
e6cfc4dff2
|
重构:拆分 HomeActivity 职责,分层解耦串口与业务逻辑
- 新建 SerialEventListener:定义串口协议解析回调接口契约
- 新建 SerialProtocolParser:迁移全部协议解析逻辑(拼包、12种命令分发、重量解析),无 Android 依赖,可单元测试
- 新建 SerialViewModel:管理串口生命周期(open/close)、Channel 数据传递,暴露 weightFlow / tempCtrlEventFlow / deviceStatusRefreshFlow
- 扩展 HomeViewModel:迁入定时任务(保存货架数据、刷新过期状态),改用 viewModelScope 管理,新增 deviceName 属性与 overdueUpdateFlow
- 精简 HomeActivity:从 835 行削减至 255 行,仅保留 UI 协调职责,所有串口与业务逻辑由 ViewModel 层处理
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-03-11 13:41:01 +08:00 |
|
 lvmengandClaude Sonnet 4.6
|
85903eb646
|
重构 HomeActivity:修复多项稳定性与架构问题
架构优化:
- 新增 HomeViewModel,将 companion object 中的共享状态(shelfItems、
weightMap、selectedShelfIndex、temperatureC、humidity)迁移至 ViewModel,
消除 Activity 重建时的状态残留与全局状态污染问题
协程修复:
- repeatOnLifecycle(CREATED) 改为 STARTED,确保 Flow 收集与 UI 可见性
生命周期对齐,进入后台时自动停止订阅
- 串口数据接收改用 Channel<String> + 单一消费协程,替代多 launch 并发模式,
彻底消除 StringBuilder(serialReader)的并发竞争问题
稳定性修复:
- 修复 tipDialog 从未赋值导致 Dialog 功能失效及 onDestroy 窗口泄漏问题
- 修复 weightHex.toInt() 十进制解析错误,改为 toIntOrNull(16) 并添加兜底
- 修复 updateOverdueState 按索引访问接口数据导致的越界风险,
改为按 deviceNo 精确匹配,同时修正交叉排列导致的状态串位问题
- 废弃 API getSerializableExtra 替换为版本分支兼容写法(minSdk 25+)
依赖升级:
- androidx.core-ktx 1.10.1 → 1.12.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
2026-03-11 11:45:44 +08:00 |
|
mazengfei
|
11e6123cc9
|
隐藏温湿度
|
2026-03-10 18:06:23 +08:00 |
|