diff --git a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java index 7338f07690..b3e235472a 100644 --- a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java +++ b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java @@ -194,14 +194,16 @@ public class DetailDownloadUtils { viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.INSTALL_NORMAL); } } else if (viewHolder.gameEntity.isVGame()) { - if (VHelper.isInstalled(downloadEntity.getPackageName())) { - viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.LAUNCH_OR_OPEN); - } else { - viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.INSTALL_NORMAL); - } + if (!viewHolder.mDownloadPb.getText().contains("更新")) { + if (VHelper.isInstalled(downloadEntity.getPackageName())) { + viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.LAUNCH_OR_OPEN); + } else { + viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.INSTALL_NORMAL); + } - viewHolder.mDownloadPb.setText(""); - viewHolder.overlayTv.setVisibility(View.VISIBLE); + viewHolder.mDownloadPb.setText(""); + viewHolder.overlayTv.setVisibility(View.VISIBLE); + } } else { if (SPUtils.getBoolean(Constants.SP_USE_BROWSER_TO_INSTALL)) { viewHolder.mDownloadPb.setText(R.string.browser_install_install); diff --git a/app/src/main/java/com/gh/common/util/PackageUtils.java b/app/src/main/java/com/gh/common/util/PackageUtils.java index 4cac0e49b5..a272b3b028 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -120,6 +120,11 @@ public class PackageUtils { // 根据版本判断是否需要更新 shouldShowUpdate = new Version(versionFromRequest).isHigherThan(versionFromInstalledApp); + // versionName 没法判定的时候尝试使用 versionCode 去判断 + if (!shouldShowUpdate && versionCodeFromRequest != 0) { + shouldShowUpdate = versionCodeFromRequest > versionCodeFromInstalledApp; + } + // 畅玩游戏根据 md5 是否一致确定是否需要更新 if (gameEntity.isVGame()) { DownloadEntity entity = DownloadManager.getInstance().getDownloadEntitySnapshotByPackageName(apkEntity.getPackageName()); @@ -127,17 +132,10 @@ public class PackageUtils { String md5FromInstalledVGame = ExtensionsKt.getMetaExtra(entity, Constants.APK_MD5); String md5FromRequest = apkEntity.getMd5(); - if (md5FromRequest != null && !md5FromRequest.equals(md5FromInstalledVGame)) { - shouldShowUpdate = true; - } + shouldShowUpdate = md5FromRequest != null && !md5FromRequest.equals(md5FromInstalledVGame); } } - // versionName 没法判定的时候尝试使用 versionCode 去判断 - if (!shouldShowUpdate && versionCodeFromRequest != 0) { - shouldShowUpdate = versionCodeFromRequest > versionCodeFromInstalledApp; - } - if (shouldShowUpdate) { GameUpdateEntity updateEntity = new GameUpdateEntity(); updateEntity.setId(gameEntity.getId()); diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt index d694c4f487..69de770f82 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeViewModel.kt @@ -158,14 +158,10 @@ class HomeViewModel(application: Application) : AndroidViewModel(application) { } unplayedEntityList.removeAll { it.packageName == fixedTopEntity?.packageName } - unplayedEntityList.sortedByDescending { - it.start - } + unplayedEntityList.sortedBy { it.start } playedEntityList.removeAll { it.packageName == fixedTopEntity?.packageName } - playedEntityList.sortedByDescending { - VHelper.getLastPlayedTime(it) - } + playedEntityList.sortedBy { VHelper.getTotalPlayedTime(it.packageName) } fixedTopEntity?.let { sortedEntityList.add(it) } sortedEntityList.addAll(unplayedEntityList) diff --git a/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt b/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt index 90f9847d26..9e3977741d 100644 --- a/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt @@ -258,7 +258,11 @@ object PackageRepository { addUpdateOrPluggable(updateEntity) } return true + } else if (game.isVGame()) { + // 畅玩游戏移除更新,避免死循环更新 + removeUpdate(game.id) } + return false } @@ -351,6 +355,14 @@ object PackageRepository { if (!isExist) gameUpdate.add(data) } + /** + * 移除更新 + * @param gameId 游戏 ID + */ + private fun removeUpdate(gameId: String) { + gameUpdate.removeAll { it.id == gameId } + } + /** * 新增已安装的游戏 * @param pkgName 已安装的游戏包名 diff --git a/app/src/main/java/com/gh/vspace/VHelper.kt b/app/src/main/java/com/gh/vspace/VHelper.kt index da83fbb4a0..8d72fc7b93 100644 --- a/app/src/main/java/com/gh/vspace/VHelper.kt +++ b/app/src/main/java/com/gh/vspace/VHelper.kt @@ -479,6 +479,15 @@ object VHelper { } } + /** + * 获取游戏的游玩时长 + */ + fun getTotalPlayedTime(packageName: String): Long { + return mInstalledInfoList.firstOrNull { + it.packageName == packageName + }?.appTotalPlayTime ?: 0L + } + /** * 根据包名获取下载快照 */