Skip to content

2.15

Choose a tag to compare

@ruozhi521 ruozhi521 released this 07 Oct 16:34
87586d9

v2.15(2026-10-07)
🐛 修复 · 覆盖安装后收藏「消失」

粉丝反馈:「新版本覆盖安装的时候,会把以前版本收藏的歌单清掉」。而自建歌单在同样的场景下没丢——这是关键线索:两者存的都是歌曲 uri,唯一差别在存储方式。自建歌单用应用私有目录的原子写 JSON,收藏却用 SharedPreferences(系统异步落盘、无原子保证、也没有备份可退回)。

旧实现还有一处硬伤:读失败时静默返回空表,用户下一次收藏就把空表固化写回,收藏真的没了;界面还会提示「还没有收藏歌曲」,看起来就像被清空了。

收藏改为与自建歌单同一套存储纪律:整文件覆盖写 + 加锁 + 先写 .tmp 再改名 + 保留 .bak 回退
双写旧 SharedPreferences:两边互为备份,任一方损坏另一方仍完整;老用户数据首次读取时自动迁移,不清空旧数据
读不出来时不再当成"没有收藏"——区分「文件损坏(退回 .bak / prefs)」与「用户确实没收藏」
收藏页新增区分提示:曲库还没加载好而收藏记录还在时,提示「音乐库还没准备好,收藏记录不会丢失」,不再误报成被清空
收藏的加载/保存都写进运行日志,万一下次还遇到,导出日志即可定位
🐛 修复 · 点开「我的收藏」明显卡顿

粉丝反馈:「点击左边收藏歌单会有明显的卡顿感,右边创建的歌单没有」——这个对比正好点破根因。

收藏判定每次都要重新解析一遍 SharedPreferences 里的 JSON,而列表是逐首去问「这首收藏了吗」。曲库上千首就是上千次解析;自建歌单只需建一次映射,所以不卡。

改为一次取出整个集合再过滤,并加内存缓存:曲库 2000 首时,解析次数从 2000 次降到 1 次
🐛 修复 · 收藏页左上角缺少《返回》按钮

收藏页从 2.14 起变成了「歌单」页的子页,但布局里一直没给它加返回入口。

收藏页左上角补上《返回》按钮,点击回到歌单页;与系统返回键行为一致
✨ 新增 · 返回键级数可选

粉丝建议:「目前的《返回》键回退的级数有点高了,功能偏向于返回主界面,而不是返回上一级」。

设置 → 播放 → 返回键级数:

逐级返回(默认):歌词页 → 播放页 → 歌单列表,一次退一级
直接回列表:歌词页按一次就回到歌单列表(2.12 起的旧行为)
顺带把播放页的《返回》按钮也统一成与系统返回键一致(原本它直接回主导航页,跳过了当前歌单列表,正是「偏向返回主界面」的由来之一)。

✨ 新增 · 批量删除

粉丝建议:可以一次删掉多首歌。

在歌曲上**长按 →「多选」**进入选择模式:左侧出现勾选框,点整行即勾选
顶部操作栏:全选 / 取消全选 / 删除 / 取消,并显示「已选 N 项」
支持批量选的列表:歌单内的歌曲、收藏、视频列表
与其他删除一致:不碰手机里的真实文件,删完可在「设置 → 已隐藏的内容」里恢复;一次写入而非逐条落盘,选多少首都快
选择中按返回键先退出选择模式(不会把整页跳走、选择全丢)
🛡️ 稳定性

云端自动化测试 184 → 211 项,构建自动跑
新增 FavoritesManagerTest(收藏存储:迁移 / 损坏回退 / 空表语义),HiddenStoreTest 补批量隐藏用例