封装AI算法升级或切换
·1 分钟
WorkNote
目录
首先AI算法升级或切换的过程需要多个地方监听,所以不能仅在升级页面上写监听逻辑,封装起来使得多个页面都能有能力接收升级回调。
那么这个时候首先会想到单例,在已有的单例中扩充该功能。
需求点>
需求点 #
- 升级/切换过程及完成首页封面需要变更状态,那么就需要一个容器存储正在升级/切换的设备。
- 需要监听设备状态反馈到界面上;
如果当前处于升级页面需要显示升级过程;如果当前处于ai列表,升级完成要及时更新列表;如果当前处于首页,升级完成要及时更新封面;… 其他页面优先级不高,暂不考虑- 添加本地数据存储,在对应的能力判断中添加该数据判断,使得所以引用的地方得到状态的修改。
实现>
实现 #
这里可能涉及多台设备更新,所以在单例内部管理一个数组,存储升级中的设备基本信息
- SN:可以在回调中判断当前是哪台设备(多设备情况下)
- 升级/切换信息:设备重启后校验版本或ID判断成功与否
- 回调记录:回调过长(多)大概率设备没有重启,或其他错误,判断为超时,停止计时器
定时器>
定时器 #
需要持续获取设备信息,那么定时器必不可少,当然它的任务必须在异步执行,防止堵塞主线。
- 调用设备状态
- 如果有状态直接输出给回调
- 如果没有状态,那么设备大概率是断开了,在升级或重启,这个时候需要请求设备算法包信息,不过不需要频繁请求,可以在非主线程中使用同步堵塞调用。一旦设备响应,比对版本信息判断是否升级成功。
以上,升级过程即封装完毕,只需在对应页面启动定时器并实现回调。
回调>
回调 #
在回调时给出相应页面所需参数即可。