Repository navigation
Releases: SPlayer-CE/SPlayer-for-Android-Next
Releases · SPlayer-CE/SPlayer-for-Android-Next
Release list
SPlayer Next Nightly 20260920
SPlayer Next Android Nightly 每夜构建 (nightly-20260920)
⚠️ 注意:Nightly 为自动构建的每夜预览版本,可能包含未经充分测试的改动与潜在缺陷。如追求稳定体验,请安装正式发布版本。
基础信息
- 构建基准分支:
Android - 构建提交哈希:
409392e7 - 构建触发时间:2026-09-20 04:29:16 (CST)
当天提交日志
v1.1.1
主要更新
perf: 播放引擎迁移专用线程并接入官方下一曲预加载(eade37f)
- 新增 SPlayerPlayback HandlerThread(THREAD_PRIORITY_AUDIO)作为 ExoPlayer、MediaSession 与 DefaultPreloadManager 的统一 application looper;引擎交互经 runOnPlaybackThread(异步)/onPlaybackThread(同步 latch)收口,公开方法收敛为薄派发层 +
@Synchronized内部实现 - 跨线程读取播放状态改走快照:cachedIsPlaying/cachedIsBuffering/cachedPlaybackRate/lastKnownPositionMs 由 250ms tick 与各 emit 点维持,getLyricPositionMs/getLyricPlaybackRate/getPositionMs 按线程判定返回
- 接入 media3 DefaultPreloadManager:预载下一曲开头 10s(specifiedRangeLoaded 参数为微秒),URL 就绪即调度;起播按 URL 命中复用 PreloadMediaSource 免首帧缓冲,命中后移出管理器避免条目累积
- PlaybackQueue 新增 peekUpcomingTracks(跳过 skipSong、右缘回绕,与 advanceRaw 选曲口径一致)供预加载取下一曲
- syncApiContext/setFftEnabled/setSpectrumAlgorithm 一并收口到播放线程,修复桥线程触达 preloadManager 的线程违规
fix: Service主线程立即升级前台修复FGS启动超时闪退(8613eaf)
- 问题:播放线程迁移后 attachService 异步派发,startForeground 依赖播放线程空闲。playIndexAtInternal 在播放线程 startForegroundService 后,播放线程正被引擎重初始化(ExoPlayer/DefaultPreloadManager 构建)占用,慢环境下超过 FGS 启动时限(Android 14+ 收紧至约 10s),系统抛 ForegroundServiceDidNotStartInTimeException 直接杀主线程导致闪退与设备卡死
- 修复:PlaybackService.onCreate 在主线程先用占位通知立即 startForeground,再异步挂载播放线程,FGS 启动时限与播放线程拥塞彻底解耦;引擎就绪后 updateNotification 仍替换为带 MediaStyle 的完整通知
- PlaybackManager 新增 ensureNotificationChannel(幂等渠道创建)与 buildStartupNotification(占位通知)
- 验证:模拟器与 x86_64 设备冷启动即点歌 + 连续切歌,FATAL/FGS 超时 0 次,startForegroundCount 正常递增,渠道 splayer_playback 挂载 MediaStyle 通知正常
Full Changelog: v1.1.0...v1.1.1
v1.1.0
What's Changed
- feat: 完成Android平台适配与基础功能搭建-初始化安卓 by @Shomi-FJS in #1
New Contributors
- @Shomi-FJS made their first contribution in #1
Full Changelog: https://github.com/SPlayer-CE/SPlayer-for-Android-Next/commits/v1.1.0