V1.4.4: 修复曲库下载期间界面卡死/极慢(高频进度回调压死主线程)
现象: 极米 H1S 上曲库开始下载后速度极慢,并有概率卡死(ANR)。 根因: MuseDbSync.downloadFile 每读一个 256KB 分块就回调一次进度, 430MB 压缩包 = 约 1700 次回调;每次回调都 main.post -> showDatabaseLoading(), 而该函数每次刷新都在主线程做: setText + 改 ProgressBar + setOnClickListener(null) + bringToFront() (bringToFront 会让整棵视图树 requestLayout)。 1700 次全屏布局把主线程 Looper 队列压满 -> 界面停止响应(卡死); 同时整机 CPU 被布局任务吃掉,网络线程与 FUSE 写盘都被拖慢 -> 下载本身也变慢。 两个症状同一个根因,不是网络问题。 修复: - 进度回调两级去重: MuseDbSync 按百分比去重; MainActivity 按最终显示文案去重, 刷新次数从约 1700 降到不超过 100。 - showDatabaseLoading 更新路径只做真正变化的事: 文本不同才 setText、进度不同才改 progress、不再每次 bringToFront()、不再每次重设监听。 - 解压(约 1GB)与 md5 校验(430MB)阶段补上进度明细(例如 正在解压曲库 512MB), 避免界面长时间停在某个百分比被误判为卡死。 - 下载速率按每 10% 上报远程日志: MUSE-DB progress 30% 129MB/430MB 1.85MB/s, 可直接区分网络慢还是磁盘慢。 - 回调签名 (Int)->Unit 扩展为 (Int, String?)->Unit 以携带明细文案。 - AGENTS.md 增补 高频回调不能直接刷 UI 条目。 版本 1.4.3(23) 到 1.4.4(24);签名证书不变。
This commit is contained in:
+2
-2
@@ -11,8 +11,8 @@ android {
|
||||
applicationId "com.local.ktv"
|
||||
minSdk 21
|
||||
targetSdk 25
|
||||
versionCode 23
|
||||
versionName "1.4.3"
|
||||
versionCode 24
|
||||
versionName "1.4.4"
|
||||
ndk {
|
||||
// 双 ABI 打包:兼容 64 位(Exynos 1580 等 arm64-v8a)与 32 位设备(极米 Play 超越版
|
||||
// 的 Amlogic 950X2/S905X2 采用 32 位 Android 用户态,必须包含 armeabi-v7a,否则
|
||||
|
||||
Reference in New Issue
Block a user