mongona

mongona
-- --
正在获取天气

站点升级手记 04:让音乐在站内一直播放,播放器状态同步怎么做

问题从多个播放器开始

网站里曾经同时存在底部播放器、独立音乐页播放器和 Gallery 播放器。它们各自能播放,但状态不同步:底部点了播放,页面播放器不知道;随机切歌后进度乱跳;更严重时,多个音频实例会同时播放。

这类问题不是样式问题,而是状态所有权问题。只要每个播放器都认为自己是主播放器,就一定会出现互相打架。

统一播放状态

升级后把播放状态抽象成一个共享状态:当前歌曲、播放/暂停、当前时间、总时长和随机切歌结果。不同位置的播放器只负责展示和控制,不再各自维护一套互不相认的音频。

底部播放器、独立音乐页和 Gallery 都监听同一组状态变化。一个地方播放,其他地方同步按钮和进度;一个地方切歌,其他地方更新封面和标题。

  • 切歌前停止旧音频,避免多首歌叠在一起。
  • 进度条更新要防抖,避免随机切歌后时间来回跳。
  • APlayer 对空 TimeRanges 比较敏感,需要处理未加载完成的边界。
  • 页面切换时保留音频状态,用户不离开网站就不主动中断播放。

体验上的收益

这个功能让网站更像一个完整的空间,而不是一组互相独立的页面。用户在文章、相册、赞助页之间切换时,音乐可以继续播放,页面状态也不会突然断掉。

从工程角度看,它也提醒我:只要组件跨页面存在,就不能用传统“每个页面初始化一次”的思维处理,必须有明确的生命周期和状态归属。

请我喝咖啡

感谢支持,我会继续更新更有用的技术内容。

打赏二维码
请我喝咖啡 如果内容帮到了你,可以赞赏支持继续更新。
Category
Tags
Site statistics

本站现有文章164篇,共被浏览130479

本次响应耗时: 0.227s

当前来路IP: 216.73.217.18   403 Forbidden

您是本站第: 235039 位访客!

本站已苟活: 

Commercial
开发者产品赞助位开放

适合 AI 工具、云服务、课程、开源项目和招聘团队。

查看合作方案
All hots
Article archiving
Mongona Radio
等待播放