From 1e88ba8539b42fc14524d1500069ff14faac1ebd Mon Sep 17 00:00:00 2001 From: chenjuntao Date: Fri, 11 Oct 2024 10:54:21 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=88=86=E7=B1=BB=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=B1=95=E7=A4=BA=E5=BC=82=E5=B8=B8=20https://jira.shanqu.cc/b?= =?UTF-8?q?rowse/GHZSCY-6778?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/gh/common/util/InstallUtils.java | 4 ++-- .../gamecenter/category2/CategoryV2ListFragment.kt | 3 ++- .../download/NewInstalledGameFragment.kt | 2 +- .../java/com/gh/gamecenter/eventbus/EBPackage.kt | 8 +++++++- .../detail/GameCollectionDetailFragment.kt | 2 +- .../gamecenter/packagehelper/PackageRepository.kt | 14 +++++++++----- .../receiver/PackageChangeBroadcastReceiver.java | 6 +++--- .../gamecenter/search/SearchGameIndexFragment.kt | 2 +- .../gamecenter/search/SearchGameResultFragment.kt | 2 +- .../gh/gamecenter/subject/SubjectListFragment.kt | 2 +- .../java/com/gh/gamecenter/tag/TagsListFragment.kt | 2 +- 11 files changed, 29 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/gh/common/util/InstallUtils.java b/app/src/main/java/com/gh/common/util/InstallUtils.java index d25ba4cbd9..f363869f45 100644 --- a/app/src/main/java/com/gh/common/util/InstallUtils.java +++ b/app/src/main/java/com/gh/common/util/InstallUtils.java @@ -65,7 +65,7 @@ public class InstallUtils { if (!TextUtils.isEmpty(installVersion) && downloadEntity != null && installVersion.equals(downloadEntity.getVersionName())) { if (!downloadEntity.isPluggable() || PackageUtils.isSignedByGh(context, packageName)) { - EventBus.getDefault().post(new EBPackage(EBPackage.TYPE_INSTALLED, packageName, installVersion)); + EventBus.getDefault().post(new EBPackage(EBPackage.TYPE_INSTALLED, packageName, installVersion, false)); } } } @@ -82,7 +82,7 @@ public class InstallUtils { keys.add(packageName); } else if (!list.contains(packageName)) { keys.add(packageName); - EventBus.getDefault().post(new EBPackage("卸载", packageName, "")); + EventBus.getDefault().post(new EBPackage("卸载", packageName, "", false)); } } for (String key : keys) { diff --git a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt index 60123efb96..22f56f0a20 100644 --- a/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category2/CategoryV2ListFragment.kt @@ -309,7 +309,8 @@ class CategoryV2ListFragment : ListFragment // 安装/卸载 事件 @Subscribe(threadMode = ThreadMode.MAIN) fun onEventMainThread(busFour: EBPackage) { - if (busFour.isInstalledOrUninstalled()) { + // 忽略首次初始化触发的事件 + if (!busFour.fromInit && busFour.isInstalledOrUninstalled()) { mAdapter?.notifyDataSetChanged() } } diff --git a/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragment.kt b/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragment.kt index 5cbdf71fa4..2a3d388f8d 100644 --- a/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/download/NewInstalledGameFragment.kt @@ -220,7 +220,7 @@ class NewInstalledGameFragment : ToolbarFragment() { @Subscribe(threadMode = ThreadMode.MAIN) fun onEventMainThread(packageEb: EBPackage) { - if (packageEb.isInstalledOrUninstalled()) { + if (!packageEb.fromInit && packageEb.isInstalledOrUninstalled()) { mInstallGameViewModel.initData( PackagesManager.filterSameApk( PackagesManager.filterDownloadBlackPackage(mPackageViewModel?.getGameInstalledLiveData()?.value as MutableList?) diff --git a/app/src/main/java/com/gh/gamecenter/eventbus/EBPackage.kt b/app/src/main/java/com/gh/gamecenter/eventbus/EBPackage.kt index bbf24008f9..2c717c3949 100644 --- a/app/src/main/java/com/gh/gamecenter/eventbus/EBPackage.kt +++ b/app/src/main/java/com/gh/gamecenter/eventbus/EBPackage.kt @@ -1,6 +1,12 @@ package com.gh.gamecenter.eventbus -class EBPackage(var type: String, var packageName: String, var versionName: String?) { +/** + * @param fromInit 实体生成是否来自于初始化 + */ +class EBPackage(var type: String, + var packageName: String, + var versionName: String?, + val fromInit: Boolean = false) { var gameId: String? = null var isVGame: Boolean = false // 是否是畅玩游戏 diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt index 45a4e4b58c..3ae88b9d09 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/detail/GameCollectionDetailFragment.kt @@ -968,7 +968,7 @@ class GameCollectionDetailFragment : // 安装/卸载 事件 @Subscribe(threadMode = ThreadMode.MAIN) fun onEventMainThread(busFour: EBPackage) { - if (busFour.isInstalledOrUninstalled()) { + if (!busFour.fromInit && busFour.isInstalledOrUninstalled()) { if (EBPackage.TYPE_INSTALLED == busFour.type && UserManager.getInstance().isLoggedIn && (mEntity?.count?.playedGame ?: 0) < (mEntity?.count?.game ?: 0) 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 c1a7c3a7a5..35d4673fb9 100644 --- a/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/packagehelper/PackageRepository.kt @@ -119,7 +119,8 @@ object PackageRepository { packageKey = packageFilterManager.packageKey, filteredList = filteredList, isVGame = false, - updateInstallStatus = true + updateInstallStatus = true, + fromInit = true ) } }, @@ -256,13 +257,15 @@ object PackageRepository { * @param onWorkerThreadOnly 是否在工作线程执行 * @param isVGame 包名列表是否为畅玩游戏 * @param updateInstallStatus 更新安装状态 (通过 EventBus 来进行) + * @param fromInit 是否来自数据首次初始化 */ @SuppressLint("CheckResult") private fun loadInstalledGameDigestAndNotifyData( packageKey: String, filteredList: ArrayList, isVGame: Boolean = false, - updateInstallStatus: Boolean = false + updateInstallStatus: Boolean = false, + fromInit: Boolean = false ) { var isNotifyUpdate = false val maxPageCount = (filteredList.size / PAGE_SIZE) + 1 @@ -291,7 +294,7 @@ object PackageRepository { for (game in validGames) { val shouldNotifyChanges = - validateGameAndPostChanges(gh_id, game, pkgName, isVGame, updateInstallStatus) + validateGameAndPostChanges(gh_id, game, pkgName, isVGame, updateInstallStatus, fromInit) if (!isNotifyUpdate && shouldNotifyChanges) { isNotifyUpdate = true } @@ -317,7 +320,8 @@ object PackageRepository { game: GameEntity, pkgName: String, isVGame: Boolean, - updateInstallStatus: Boolean + updateInstallStatus: Boolean, + fromInit: Boolean = false ): Boolean { if (ghId == null || ghId == game.id) { gameInstalled.add(GameInstall.transformGameInstall(game, pkgName, isVGame)) @@ -328,7 +332,7 @@ object PackageRepository { if (updateInstallStatus) { EventBus.getDefault() - .post(EBPackage(EBPackage.TYPE_INSTALLED, pkgName, game.getApk().firstOrNull()?.version)) + .post(EBPackage(EBPackage.TYPE_INSTALLED, pkgName, game.getApk().firstOrNull()?.version, fromInit)) } if (isCanUpdate || isCanPluggable) { diff --git a/app/src/main/java/com/gh/gamecenter/receiver/PackageChangeBroadcastReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/PackageChangeBroadcastReceiver.java index 4425bb0a06..b32f4eb010 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/PackageChangeBroadcastReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/PackageChangeBroadcastReceiver.java @@ -72,7 +72,7 @@ public class PackageChangeBroadcastReceiver extends BroadcastReceiver { PackageHelper.refreshLocalPackageList(); String versionName = PackageUtils.getVersionNameByPackageName(packageName); - EBPackage installEb = new EBPackage(EBPackage.TYPE_INSTALLED, packageName, versionName); + EBPackage installEb = new EBPackage(EBPackage.TYPE_INSTALLED, packageName, versionName, false); if (PackageUtils.isAppOnForeground(context)) { PackageObserver.onPackageChanged(installEb, null); EventBus.getDefault().post(installEb); @@ -102,7 +102,7 @@ public class PackageChangeBroadcastReceiver extends BroadcastReceiver { InstallUtils.getInstance().removeUninstall(packageName); PackageHelper.refreshLocalPackageList(); - EBPackage uninstallEb = new EBPackage(EBPackage.TYPE_UNINSTALLED, packageName, ""); + EBPackage uninstallEb = new EBPackage(EBPackage.TYPE_UNINSTALLED, packageName, "", false); PackageObserver.onPackageChanged(uninstallEb, null); EventBus.getDefault().post(uninstallEb); if (webviewPackageName.equals(packageName)) { @@ -118,7 +118,7 @@ public class PackageChangeBroadcastReceiver extends BroadcastReceiver { Utils.log(TAG, "替换了:" + packageName + "包名的程序"); String versionName = PackageUtils.getVersionNameByPackageName(packageName); - EBPackage updateEb = new EBPackage(EBPackage.TYPE_REPLACED, packageName, versionName); + EBPackage updateEb = new EBPackage(EBPackage.TYPE_REPLACED, packageName, versionName, false); EventBus.getDefault().post(updateEb); PackageObserver.onPackageChanged(updateEb, null); if (webviewPackageName.equals(packageName)) { diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexFragment.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexFragment.kt index 1a99789c75..60a616e0a2 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexFragment.kt @@ -214,7 +214,7 @@ class SearchGameIndexFragment : ListFragment() { // 安装/卸载 事件 @Subscribe(threadMode = ThreadMode.MAIN) fun onEventMainThread(busFour: EBPackage) { - if (busFour.isInstalledOrUninstalled()) { + if (!busFour.fromInit && busFour.isInstalledOrUninstalled()) { mAdapter?.notifyDataSetChanged() } }