Merge branch 'fix/vgame_download_flicker' into 'dev'

fix: 修复列表下载畅玩游戏时下载按钮闪烁并频繁切换状态的问题

See merge request halo/android/assistant-android!1166
This commit is contained in:
陈君陶
2023-06-30 15:48:54 +08:00

View File

@ -3,7 +3,6 @@ package com.gh.common.util
import android.content.Context
import android.os.Message
import android.text.TextUtils
import android.util.Log
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.collection.ArrayMap
@ -265,11 +264,17 @@ object DownloadItemUtils {
}
}
} else if (gameEntity.getApk().size == 1) {
val downloadEntity = if (gameEntity.isVGame()) {
VHelper.getVDownloadEntitySnapshot(gameEntity.id, gameEntity.getUniquePackageName())
} else {
gameEntity.getEntryMap()[gameEntity.getUniquePlatform()] ?: DownloadManager.getInstance()
.getDownloadEntitySnapshot(gameEntity)
// 优先从下载管理获取 downloadEntity
var downloadEntity = DownloadManager.getInstance().getDownloadEntitySnapshot(gameEntity)
// 找不到时,若类型为畅玩,尝试从畅玩数据库的快照中获取 downloadEntity。若存在代表游戏已下载并成功安装
if (downloadEntity == null && gameEntity.isVGame()) {
downloadEntity = VHelper.getVDownloadEntitySnapshot(gameEntity.id, gameEntity.getUniquePackageName())
}
// 还是找不到时,尝试从 gameEntity 里找已绑定的 downloadEntity
if (downloadEntity == null) {
downloadEntity = gameEntity.getEntryMap().getOrDefault(gameEntity.getUniquePlatform(), null)
}
if (downloadEntity != null) {
@ -947,9 +952,10 @@ object DownloadItemUtils {
}
}
} else {
val downloadEntity = gameEntity.getEntryMap()[gameEntity.getUniquePlatform()] ?: DownloadManager.getInstance()
.getDownloadEntitySnapshot(gameEntity)
var downloadEntity = DownloadManager.getInstance().getDownloadEntitySnapshot(gameEntity)
if (downloadEntity == null && gameEntity.getApk().size == 1) {
downloadEntity = gameEntity.getEntryMap().getOrDefault(gameEntity.getUniquePlatform(), null)
}
if (downloadEntity != null) {
val xapkStatus = downloadEntity.meta[XapkInstaller.XAPK_UNZIP_STATUS]
if (XapkUnzipStatus.INSTALLING.name == xapkStatus) {// 安装过程中避免重复点击