fix: 修复更新判断异常和首页最近在玩的排序问题
This commit is contained in:
@ -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);
|
||||
|
||||
@ -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());
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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 已安装的游戏包名
|
||||
|
||||
@ -479,6 +479,15 @@ object VHelper {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取游戏的游玩时长
|
||||
*/
|
||||
fun getTotalPlayedTime(packageName: String): Long {
|
||||
return mInstalledInfoList.firstOrNull {
|
||||
it.packageName == packageName
|
||||
}?.appTotalPlayTime ?: 0L
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据包名获取下载快照
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user