flowchart TD
A[移动端选择本地歌曲 content://] --> B[resolveContentUri]
B --> C[复制音频到 AppData/music_cache]
C --> D[写入 db.songs]
D --> E[写入 playlist.songIds]
F[用户删除歌单/移除歌曲] --> G[只删除 db.playlists 或 playlist.songIds]
G --> H[db.songs 记录仍保留]
G --> I[music_cache 文件仍保留]
H --> J[形成无人引用歌曲数据]
I --> K[继续占用应用存储空间]
style C fill:#fff3e0,color:#e65100
style H fill:#ffcdd2,color:#b71c1c
style I fill:#ffcdd2,color:#b71c1c
style K fill:#ffcdd2,color:#b71c1c
安卓端通过“导入本地歌曲”导入音频文件后,应用会将
content://文件复制到应用私有目录music_cache中。但后续删除歌单、删除歌曲引用或解除文件夹关联时,只删除了数据库中的歌单/引用关系,并不会清理对应的歌曲记录与
music_cache缓存文件。这会导致用户认为歌曲已经删除,但应用私有目录中仍保留音频文件,占用存储空间。
版本号
AMLL.Player_0.0.1+1098_arm64.apk当前行为大致链路
flowchart TD A[移动端选择本地歌曲 content://] --> B[resolveContentUri] B --> C[复制音频到 AppData/music_cache] C --> D[写入 db.songs] D --> E[写入 playlist.songIds] F[用户删除歌单/移除歌曲] --> G[只删除 db.playlists 或 playlist.songIds] G --> H[db.songs 记录仍保留] G --> I[music_cache 文件仍保留] H --> J[形成无人引用歌曲数据] I --> K[继续占用应用存储空间] style C fill:#fff3e0,color:#e65100 style H fill:#ffcdd2,color:#b71c1c style I fill:#ffcdd2,color:#b71c1c style K fill:#ffcdd2,color:#b71c1c当再次导入歌曲时,无法有概率无法导入,控制台提示