← 返回笔记
Java / Architecture已验证

EHP 1Hz 消息为什么没有沿用主线程 Handler

从实时性、线程竞争和导航状态切换出发,回顾 EHP 七类消息的 Observer 分发机制以及它与 UI 消息链路的边界。

ObserverHandlerConcurrencyEHP

EHP 1Hz 消息为什么没有沿用主线程 Handler

导航 SDK 中大量业务使用 Handler 把消息切回主线程,这对 UI 更新很自然,但 EHP 消息要求在导航过程中稳定地按 1Hz 产生并发送。

如果继续复用主线程队列,页面渲染、交互回调和其他导航消息都可能排在 EHP 任务之前。延迟不是固定值,因此不能只通过提前若干毫秒发送来补偿。

实现中为 EHP 建立了独立的 Observer 分发链路,使消息产生和消费者通知不依赖 UI 队列,同时在偏航、路线切换和导航结束时显式更新状态。

需要注意:独立线程并不自动等于线程安全。订阅生命周期、共享导航状态的可见性、异常隔离和停止条件都必须单独设计。