Skip to main content
  1. Works/

封装AI算法升级或切换

·1 分钟
WorkNote

首先AI算法升级或切换的过程需要多个地方监听,所以不能仅在升级页面上写监听逻辑,封装起来使得多个页面都能有能力接收升级回调。

那么这个时候首先会想到单例,在已有的单例中扩充该功能。

需求点>

需求点 #

  1. 升级/切换过程及完成首页封面需要变更状态,那么就需要一个容器存储正在升级/切换的设备。
  2. 需要监听设备状态反馈到界面上;
    1. 如果当前处于升级页面需要显示升级过程;
    2. 如果当前处于ai列表,升级完成要及时更新列表;
    3. 如果当前处于首页,升级完成要及时更新封面;
    4. … 其他页面优先级不高,暂不考虑
    5. 添加本地数据存储,在对应的能力判断中添加该数据判断,使得所以引用的地方得到状态的修改。
实现>

实现 #

这里可能涉及多台设备更新,所以在单例内部管理一个数组,存储升级中的设备基本信息

  • SN:可以在回调中判断当前是哪台设备(多设备情况下)
  • 升级/切换信息:设备重启后校验版本或ID判断成功与否
  • 回调记录:回调过长(多)大概率设备没有重启,或其他错误,判断为超时,停止计时器
定时器>

定时器 #

需要持续获取设备信息,那么定时器必不可少,当然它的任务必须在异步执行,防止堵塞主线。

  1. 调用设备状态
  2. 如果有状态直接输出给回调
  3. 如果没有状态,那么设备大概率是断开了,在升级或重启,这个时候需要请求设备算法包信息,不过不需要频繁请求,可以在非主线程中使用同步堵塞调用。一旦设备响应,比对版本信息判断是否升级成功。

以上,升级过程即封装完毕,只需在对应页面启动定时器并实现回调。

回调>

回调 #

在回调时给出相应页面所需参数即可。