用途:为 Even Hub 插件补上后台状态持久化。Even Hub 宿主在手机进入后台时采用 Headless WebView 迁移策略:inactive 阶段通过 window.__getStateSnapshot() 快照 JS 状态,paused 阶段新建 HeadlessInAppWebView 加载同一插件 URL 并调用 window.__restoreState(snapshot) 回放,Background 阶段无头 WebView 继续向眼镜推帧,resumed 阶段把快照注入前台 WebView 后销毁无头实例。若插件未注册状态导出器,快照为空对象,无头 WebView 从零启动,导致每次回到前台都重置。
主要能力:分析插件源码,识别值得快照的状态变量(计数器、计时器、选中项、当前页、模式、数据缓冲/历史、启动后会被修改的配置等),跳过派生值、WebView 生命周期标志、bridge/控制器引用、临时 UI 标志等不可序列化或会重新初始化的变量。按逻辑状态分组选择 1–2 个 key,在状态声明之后、bridge.onEvenHubEvent 之前插入注册代码,并补充 import。
用法:从 @evenrealities/even_hub_sdk 导入 setBackgroundState 与 onBackgroundRestore;导出器返回可 JSON 序列化的普通对象快照(用展开复制,不要返回活引用),恢复器接收 Record<string, unknown>,需先断言类型再逐字段用 ?? 回退到当前值;两次调用 key 必须一致,且必须在模块初始化时执行。
限制:快照不能包含类实例、函数、Map、Set、Date 等无法 JSON 往返的值;恢复器必须重新赋值活变量而非只读取;注册不能放在条件分支或事件回调里,否则可能来不及保存。资料未提供该技能的安装命令、收费与平台支持信息。