diff --git a/app/src/main/java/com/gh/common/databind/BindingAdapters.java b/app/src/main/java/com/gh/common/databind/BindingAdapters.java index abb8372ca6..0648efd6f5 100644 --- a/app/src/main/java/com/gh/common/databind/BindingAdapters.java +++ b/app/src/main/java/com/gh/common/databind/BindingAdapters.java @@ -41,7 +41,7 @@ import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.KaiFuCalendarEntity; import com.gh.gamecenter.entity.PluginLocation; import com.gh.gamecenter.eventbus.EBReuse; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.lightgame.download.DownloadEntity; import com.lightgame.download.FileUtils; import com.lightgame.utils.Utils; @@ -344,7 +344,7 @@ public class BindingAdapters { case neterror: case waiting: progressBar.setText(R.string.downloading); - if (downloadEntity.isPluggable() && PackageManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { + if (downloadEntity.isPluggable() && PackagesManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { progressBar.setDownloadType(DownloadProgressBar.DownloadType.DOWNLOADING_PLUGIN); } else { progressBar.setDownloadType(DownloadProgressBar.DownloadType.DOWNLOADING_NORMAL); @@ -353,7 +353,7 @@ public class BindingAdapters { case done: progressBar.setText(R.string.install); if (downloadEntity.isPluggable() - && PackageManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { + && PackagesManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { progressBar.setDownloadType(DownloadProgressBar.DownloadType.INSTALL_PLUGIN); } else { progressBar.setDownloadType(DownloadProgressBar.DownloadType.INSTALL_NORMAL); diff --git a/app/src/main/java/com/gh/common/util/ApkActiveUtils.java b/app/src/main/java/com/gh/common/util/ApkActiveUtils.java index ce21bc4702..1e06f0eb3a 100644 --- a/app/src/main/java/com/gh/common/util/ApkActiveUtils.java +++ b/app/src/main/java/com/gh/common/util/ApkActiveUtils.java @@ -2,7 +2,7 @@ package com.gh.common.util; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import java.util.List; @@ -22,7 +22,7 @@ public class ApkActiveUtils { ApkEntity apkEntity = apkList.get(i); String packageName = apkEntity.getPackageName(); String id = gameEntity.getId(); - if (!apkEntity.isActive() && !PackageManager.INSTANCE.isCanPluggable(id, packageName)) { + if (!apkEntity.isActive() && !PackagesManager.INSTANCE.isCanPluggable(id, packageName)) { apkList.remove(i); i--; } diff --git a/app/src/main/java/com/gh/common/util/DataCollectionUtils.java b/app/src/main/java/com/gh/common/util/DataCollectionUtils.java index c93f0943f1..2314aa6de5 100644 --- a/app/src/main/java/com/gh/common/util/DataCollectionUtils.java +++ b/app/src/main/java/com/gh/common/util/DataCollectionUtils.java @@ -6,7 +6,7 @@ import android.os.Build; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.NewsDetailEntity; import com.gh.gamecenter.manager.DataCollectionManager; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.lightgame.download.DownloadEntity; import org.json.JSONArray; @@ -118,7 +118,7 @@ public class DataCollectionUtils { Map map = new HashMap<>(); map.put("type", Build.MODEL); map.put("system", Build.VERSION.SDK_INT + "=" + Build.VERSION.RELEASE); - map.put("install", PackageManager.INSTANCE.getInstalledList()); + map.put("install", PackagesManager.INSTANCE.getInstalledList()); DataCollectionManager.upsert(context, "user", map); } 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 1fb22c6bc8..1a53d85786 100644 --- a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java +++ b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java @@ -9,7 +9,7 @@ import com.gh.download.DownloadManager; import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.DetailViewHolder; import com.gh.gamecenter.entity.PluginLocation; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.lightgame.download.DownloadEntity; /** @@ -73,7 +73,7 @@ public class DetailDownloadUtils { case downloading: case pause: viewHolder.mDownloadPb.setText(R.string.downloading); - if (downloadEntity.isPluggable() && PackageManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { + if (downloadEntity.isPluggable() && PackagesManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.DOWNLOADING_PLUGIN); } else { viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.DOWNLOADING_NORMAL); @@ -84,7 +84,7 @@ public class DetailDownloadUtils { case waiting: case subscribe: viewHolder.mDownloadPb.setText(R.string.waiting); - if (downloadEntity.isPluggable() && PackageManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { + if (downloadEntity.isPluggable() && PackagesManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.DOWNLOADING_PLUGIN); } else { viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.DOWNLOADING_NORMAL); @@ -93,7 +93,7 @@ public class DetailDownloadUtils { case done: viewHolder.mDownloadPb.setText(R.string.install); if (downloadEntity.isPluggable() - && PackageManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { + && PackagesManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.INSTALL_PLUGIN); } else { viewHolder.mDownloadPb.setDownloadType(DownloadProgressBar.DownloadType.INSTALL_NORMAL); diff --git a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java index c3f68d3658..d86f2f88de 100644 --- a/app/src/main/java/com/gh/common/util/DownloadItemUtils.java +++ b/app/src/main/java/com/gh/common/util/DownloadItemUtils.java @@ -22,7 +22,7 @@ import com.gh.gamecenter.adapter.viewholder.GameViewHolder; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.PluginLocation; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.lightgame.download.DownloadConfig; import com.lightgame.download.DownloadEntity; import com.lightgame.download.DownloadStatus; @@ -261,7 +261,7 @@ public class DownloadItemUtils { holder.gameDownloadBtn.setText("安装"); holder.gameDownloadBtn.setTextColor(Color.WHITE); if (downloadEntity.isPluggable() - && PackageManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { + && PackagesManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { holder.gameDownloadBtn.setBackgroundResource(R.drawable.game_item_btn_plugin_style); } else { holder.gameDownloadBtn.setBackgroundResource(R.drawable.game_item_btn_download_style); diff --git a/app/src/main/java/com/gh/common/util/GameUtils.java b/app/src/main/java/com/gh/common/util/GameUtils.java index 7534585f4c..deceb24c58 100644 --- a/app/src/main/java/com/gh/common/util/GameUtils.java +++ b/app/src/main/java/com/gh/common/util/GameUtils.java @@ -13,7 +13,7 @@ import com.gh.gamecenter.entity.GameCollectionEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.entity.PluginLocation; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.lightgame.download.DownloadEntity; import com.lightgame.download.DownloadStatus; @@ -91,10 +91,10 @@ public class GameUtils { updateCount++; } } - if (PackageManager.INSTANCE.isCanUpdate(gameEntity.getId(), apkEntity.getPackageName())) { + if (PackagesManager.INSTANCE.isCanUpdate(gameEntity.getId(), apkEntity.getPackageName())) { updateCount++; } - if (PackageManager.INSTANCE.isInstalled(apkEntity.getPackageName())) { + if (PackagesManager.INSTANCE.isInstalled(apkEntity.getPackageName())) { gh_id = PackageUtils.getMetaData(context, apkEntity.getPackageName(), "gh_id"); if (gameEntity.getTag() != null && gameEntity.getTag().size() != 0 && !TextUtils.isEmpty(apkEntity.getGhVersion()) 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 6efd13218e..e4c064edcd 100644 --- a/app/src/main/java/com/gh/common/util/PackageUtils.java +++ b/app/src/main/java/com/gh/common/util/PackageUtils.java @@ -202,7 +202,7 @@ public class PackageUtils { if (TextUtils.isEmpty(packageName)) { return true; } - boolean isContain = com.gh.gamecenter.manager.PackageManager.INSTANCE.isInstalled(packageName); + boolean isContain = com.gh.gamecenter.manager.PackagesManager.INSTANCE.isInstalled(packageName); if (!isContain) { return true; } diff --git a/app/src/main/java/com/gh/common/view/DownloadDialog.java b/app/src/main/java/com/gh/common/view/DownloadDialog.java index a2357ba4df..a9d6ea8959 100644 --- a/app/src/main/java/com/gh/common/view/DownloadDialog.java +++ b/app/src/main/java/com/gh/common/view/DownloadDialog.java @@ -31,7 +31,7 @@ import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBPackage; import com.gh.gamecenter.eventbus.EBReuse; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.lightgame.download.DataWatcher; import com.lightgame.download.DownloadEntity; import com.lightgame.download.DownloadStatus; @@ -241,12 +241,12 @@ public class DownloadDialog implements OnCollectionCallBackListener { String packageName = apkEntity.getPackageName(); DownloadEntity downloadEntity = DownloadManager.getInstance(mContext).getDownloadEntityByUrl(apkEntity.getUrl()); if (downloadEntity == null) { - if (!TextUtils.isEmpty(packageName) && PackageManager.INSTANCE.isInstalled(packageName)) { + if (!TextUtils.isEmpty(packageName) && PackagesManager.INSTANCE.isInstalled(packageName)) { gh_id = PackageUtils.getMetaData(mContext, packageName, "gh_id"); if (gh_id == null || gh_id.equals(gameEntity.getId())) { if (!PackageUtils.isSignature(mContext, packageName)) { return 8; - } else if (PackageManager.INSTANCE.isCanUpdate(gameEntity.getId(), packageName)) { + } else if (PackagesManager.INSTANCE.isCanUpdate(gameEntity.getId(), packageName)) { return 5; } else { return 2; diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 0a5ce9f5d3..9020e35cb0 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -20,7 +20,7 @@ import com.gh.common.util.PackageUtils; import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.eventbus.EBDownloadStatus; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.google.gson.Gson; import com.lightgame.config.CommonDebug; import com.lightgame.download.ConnectionUtils; @@ -232,7 +232,7 @@ public class DownloadManager implements DownloadStatusListener { downloadEntity.setVersionName(apkEntity.getVersion()); int installed = 0; for (ApkEntity apk : gameEntity.getApk()) { - if (PackageManager.INSTANCE.isInstalled(apk.getPackageName())) { + if (PackagesManager.INSTANCE.isInstalled(apk.getPackageName())) { installed++; } } diff --git a/app/src/main/java/com/gh/gamecenter/InstallActivity.java b/app/src/main/java/com/gh/gamecenter/InstallActivity.java index 2195ca70b7..cd180b6316 100644 --- a/app/src/main/java/com/gh/gamecenter/InstallActivity.java +++ b/app/src/main/java/com/gh/gamecenter/InstallActivity.java @@ -26,6 +26,7 @@ import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.eventbus.EBSkip; import com.gh.gamecenter.install.PackageViewModel; +import com.gh.gamecenter.manager.PackagesManager; import com.lightgame.download.DataWatcher; import com.lightgame.download.DownloadEntity; @@ -115,7 +116,7 @@ public class InstallActivity extends BaseActivity implements InstallFragmentAdap mPackageViewModel = ViewModelProviders.of(this, new PackageViewModel.Factory()).get(PackageViewModel.class); mPackageViewModel.getGameInstalledLiveData().observe(this, - gameInstalls -> mAdapter.initData(mPackageViewModel.filterSameApk(gameInstalls))); + gameInstalls -> mAdapter.initData(PackagesManager.filterSameApk(gameInstalls))); } @Override diff --git a/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java index ff0dad5c29..a5eb775c66 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/KcSelectGameAdapter.java @@ -26,10 +26,10 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.FooterViewHolder; import com.gh.gamecenter.adapter.viewholder.KcSelectGameViewHolder; import com.gh.gamecenter.adapter.viewholder.ReuseViewHolder; -import com.gh.gamecenter.db.info.InstallInfo; +import com.gh.gamecenter.entity.GameInstall; import com.gh.gamecenter.entity.InstallGameEntity; import com.gh.gamecenter.kuaichuan.FileInfo; -import com.gh.gamecenter.manager.InstallManager; +import com.gh.gamecenter.manager.PackagesManager; import com.gh.gamecenter.retrofit.Response; import com.halo.assistant.HaloApp; import com.lightgame.adapter.BaseRecyclerAdapter; @@ -81,75 +81,65 @@ public class KcSelectGameAdapter extends BaseRecyclerAdapter { sendOverList = (List) HaloApp.get(KcSelectGameActivity.KEY_FILE_INFO, false); - InstallManager cManager = new InstallManager(mContext); - List runnableGame = cManager.getAllInstall(); - init(runnableGame); + + init(); } //初始化 - private void init(final List runnableGame) { + private void init() { Observable.create(new ObservableOnSubscribe() { - @Override - public void subscribe(ObservableEmitter emitter) throws Exception { - PackageManager pm = mContext.getPackageManager(); - List installedPackages = pm.getInstalledPackages(0); + @Override + public void subscribe(ObservableEmitter emitter) throws Exception { + ArrayList installedList = PackagesManager.filterSameApk(PackagesManager.getInstalledList()); + PackageManager pm = mContext.getPackageManager(); + List installedPackages = pm.getInstalledPackages(0); - List arrInstallPackage = new ArrayList<>(); + List game = new ArrayList<>(); // 防止数据加载时recyclerView首次刷新时造成的数据残缺 + List apk = new ArrayList<>(); - for (InstallInfo installInfo : runnableGame) { - for (String s : installInfo.getPackageNames().keySet()) { - if (installInfo.getPackageNames().get(s)) { - arrInstallPackage.add(s); + for (PackageInfo installedPackage : installedPackages) { + if ((installedPackage.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { + InstallGameEntity installGameEntity = new InstallGameEntity(); + installGameEntity.setGamePath(installedPackage.applicationInfo.sourceDir); + try { + Drawable drawable = installedPackage.applicationInfo.loadIcon(pm); + installGameEntity.setGameBm(BitmapUtils.drawableToBitmap(drawable)); + + installGameEntity.setGameVersion(installedPackage.versionName); + installGameEntity.setGameName(installedPackage.applicationInfo.loadLabel(pm).toString()); + installGameEntity.setPackageName(installedPackage.packageName); + + File file = new File(installedPackage.applicationInfo.sourceDir); + installGameEntity.setGameSize(file.length()); + boolean isAdd = false; + for (GameInstall gameInstall : installedList) { + if (installedPackage.packageName.equals(gameInstall.getPackageName())) { + game.add(installGameEntity); + isAdd = true; + break; } } - } - List game = new ArrayList<>(); // 防止数据加载时recyclerView首次刷新时造成的数据残缺 - List apk = new ArrayList<>(); - - for (PackageInfo installedPackage : installedPackages) { - if ((installedPackage.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 0) { - InstallGameEntity installGameEntity = new InstallGameEntity(); - installGameEntity.setGamePath(installedPackage.applicationInfo.sourceDir); - try { - Drawable drawable = installedPackage.applicationInfo.loadIcon(pm); - installGameEntity.setGameBm(BitmapUtils.drawableToBitmap(drawable)); - - installGameEntity.setGameVersion(installedPackage.versionName); - installGameEntity.setGameName(installedPackage.applicationInfo.loadLabel(pm).toString()); - installGameEntity.setPackageName(installedPackage.packageName); - - File file = new File(installedPackage.applicationInfo.sourceDir); - installGameEntity.setGameSize(file.length()); - boolean isAdd = false; - for (int j = 0; j < arrInstallPackage.size(); j++) { - if (installedPackage.packageName.equals(arrInstallPackage.get(j))) { - game.add(installGameEntity); - isAdd = true; - break; - } - } - - if (!isAdd) { - apk.add(installGameEntity); - } - } catch (Exception e) { - - } + if (!isAdd) { + apk.add(installGameEntity); } + } catch (Exception e) { + } - - mGameList.addAll(game); - mApkList.addAll(apk); - - for (int i = 0; i < (mGameList.size() + mApkList.size() + 1); i++) { - mSelectPosition.put(i, false); - } - - emitter.onComplete(); } - }) + } + + mGameList.addAll(game); + mApkList.addAll(apk); + + for (int i = 0; i < (mGameList.size() + mApkList.size() + 1); i++) { + mSelectPosition.put(i, false); + } + + emitter.onComplete(); + } + }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Response() { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java index 3504dd6e5f..86e196c1f5 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PlatformAdapter.java @@ -38,7 +38,7 @@ import com.gh.gamecenter.entity.ApkLink; import com.gh.gamecenter.entity.CollectionCloseEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.PluginLocation; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.halo.assistant.HaloApp; import com.lightgame.adapter.BaseRecyclerAdapter; import com.lightgame.download.DownloadEntity; @@ -188,7 +188,7 @@ public class PlatformAdapter extends BaseRecyclerAdapter { viewHolder.itemView.setBackgroundDrawable(new ColorDrawable(0)); } else { Object gh_id = PackageUtils.getMetaData(mContext, apkEntity.getPackageName(), "gh_id"); - if (PackageManager.INSTANCE.isInstalled(apkEntity.getPackageName()) + if (PackagesManager.INSTANCE.isInstalled(apkEntity.getPackageName()) && (gh_id == null || gh_id.equals(mGameEntity.getId()))) { // 已安装 viewHolder.mDownloadItemIvPic.setVisibility(View.GONE); @@ -224,7 +224,7 @@ public class PlatformAdapter extends BaseRecyclerAdapter { viewHolder.itemView.setClickable(false); viewHolder.mDownloadItemProgressbar.setProgress(0); } - } else if (PackageManager.INSTANCE.isCanUpdate(mGameEntity.getId(), apkEntity.getPackageName())) { + } else if (PackagesManager.INSTANCE.isCanUpdate(mGameEntity.getId(), apkEntity.getPackageName())) { viewHolder.mDownloadItemTvStatus.setText(R.string.update); } else { if (mOnCollectionCallBackListener == null) { diff --git a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java index 9733200d11..7950c6f3f5 100644 --- a/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/adapter/PluginAdapter.java @@ -20,7 +20,7 @@ import com.gh.gamecenter.entity.ApkEntity; import com.gh.gamecenter.entity.GameEntity; import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.manager.GameManager; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.lightgame.adapter.BaseRecyclerAdapter; import java.util.ArrayList; @@ -52,7 +52,7 @@ public class PluginAdapter extends BaseRecyclerAdapter { // 检查可以插件化的游戏 private void init() { - ArrayList updateList = PackageManager.INSTANCE.getUpdateList(); + ArrayList updateList = PackagesManager.INSTANCE.getUpdateList(); if (updateList.isEmpty()) { return; } diff --git a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt index 5602cafd42..96954fd090 100644 --- a/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/download/DownloadFragment.kt @@ -15,7 +15,7 @@ import com.gh.gamecenter.eventbus.EBDownloadChanged import com.gh.gamecenter.eventbus.EBMiPush import com.gh.gamecenter.eventbus.EBSkip import com.gh.gamecenter.eventbus.EBUISwitch -import com.gh.gamecenter.manager.PackageManager +import com.gh.gamecenter.manager.PackagesManager import com.halo.assistant.HaloApp import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.Subscribe @@ -68,7 +68,7 @@ class DownloadFragment : BaseFragment_TabLayout() { super.onViewCreated(view, savedInstanceState) var updateSize = 0 - for (updateEntity in PackageManager.getUpdateList()) { + for (updateEntity in PackagesManager.getUpdateList()) { if (updateEntity.isShowPlugin(PluginLocation.only_index)) updateSize++ } if (updateSize != 0) { diff --git a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java index d463c0e816..aa376c6900 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameDownloadFragmentAdapter.java @@ -29,7 +29,7 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.adapter.viewholder.DownloadHeadViewHolder; import com.gh.gamecenter.adapter.viewholder.GameDownloadViewHolder; import com.gh.gamecenter.eventbus.EBDownloadChanged; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.halo.assistant.HaloApp; import com.lightgame.adapter.BaseRecyclerAdapter; import com.lightgame.download.DownloadConfig; @@ -181,7 +181,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { viewHolder.dmDelete.setVisibility(View.VISIBLE); viewHolder.dmStartorpause.setTextColor(Color.WHITE); if (downloadEntity.isPluggable() - && PackageManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { + && PackagesManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { viewHolder.dmStartorpause.setText("安装"); viewHolder.dmStartorpause.setBackgroundResource(R.drawable.game_item_btn_plugin_style); } else { @@ -282,7 +282,7 @@ class GameDownloadFragmentAdapter extends BaseRecyclerAdapter { case "安装": final String path = downloadEntity.getPath(); if (downloadEntity.isPluggable() - && PackageManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { + && PackagesManager.INSTANCE.isInstalled(downloadEntity.getPackageName())) { showPluginDialog(downloadEntity.getPath()); } else { if (FileUtils.isEmptyFile(path)) { diff --git a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java index ffbe79a09e..00aae979de 100644 --- a/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/download/GameUpdateFragmentAdapter.java @@ -36,7 +36,7 @@ import com.gh.gamecenter.entity.GameUpdateEntity; import com.gh.gamecenter.entity.PluginLocation; import com.gh.gamecenter.eventbus.EBDownloadChanged; import com.gh.gamecenter.eventbus.EBSkip; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.retrofit.RetrofitManager; import com.halo.assistant.HaloApp; @@ -114,7 +114,7 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter { List update = PackageUtils.isCanUpdate(mContext, response); if (update.size() > 0) { updateList.addAll(update); -// PackageManager.INSTANCE.addUpdateList(update); +// PackagesManager.INSTANCE.addUpdateList(update); EventBus.getDefault().post(new EBDownloadChanged("update", View.VISIBLE, updateList.size())); initLocationMap(); @@ -359,7 +359,7 @@ class GameUpdateFragmentAdapter extends BaseRecyclerAdapter { DownloadEntity downloadEntity = DownloadManager.getInstance(mContext).getDownloadEntityByUrl(updateEntity.getUrl()); if (downloadEntity == null) { - if (PackageManager.INSTANCE.isCanUpdate(updateEntity.getId(), updateEntity.getPackageName())) { + if (PackagesManager.INSTANCE.isCanUpdate(updateEntity.getId(), updateEntity.getPackageName())) { viewHolder.guUpdate.setText(R.string.update); viewHolder.guUpdate.setTextColor(Color.WHITE); viewHolder.guUpdate.setBackgroundResource(R.drawable.game_item_btn_download_style); diff --git a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java index 5e2bca1e27..032c9ccd97 100644 --- a/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java +++ b/app/src/main/java/com/gh/gamecenter/fragment/SearchToolbarFragment.java @@ -31,7 +31,7 @@ import com.gh.gamecenter.entity.PluginLocation; import com.gh.gamecenter.eventbus.EBDownloadStatus; import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.install.PackageViewModel; -import com.gh.gamecenter.manager.PackageManager; +import com.gh.gamecenter.manager.PackagesManager; import org.greenrobot.eventbus.Subscribe; import org.greenrobot.eventbus.ThreadMode; @@ -196,7 +196,7 @@ public class SearchToolbarFragment extends BaseFragment implements View.OnClickL } int updateSize = 0; - for (GameUpdateEntity updateEntity : PackageManager.INSTANCE.getUpdateList()) { + for (GameUpdateEntity updateEntity : PackagesManager.INSTANCE.getUpdateList()) { if (updateEntity.isShowPlugin(PluginLocation.only_index)) updateSize++; } int downloadSize = DownloadManager.getInstance(getActivity()).getAll().size(); diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java index ae0ffee39c..dc7ada5efe 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.java @@ -43,7 +43,7 @@ import com.gh.gamecenter.eventbus.EBReuse; import com.gh.gamecenter.gamedetail.desc.DescFragment; import com.gh.gamecenter.gamedetail.fuli.FuLiFragment; import com.gh.gamecenter.gamedetail.rating.RatingFragment; -import com.gh.gamecenter.manager.InstallManager; +import com.gh.gamecenter.manager.PackagesManager; import com.gh.gamecenter.normal.NormalFragment; import com.halo.assistant.HaloApp; import com.lightgame.adapter.BaseFragmentPagerAdapter; @@ -305,7 +305,7 @@ public class GameDetailFragment extends NormalFragment { DetailDownloadUtils.detailInitDownload(viewHolder, true); if (!mGameDetailEntity.getMe().isGameConcerned()) { - if (new InstallManager(getContext()).findInstallById(mGameEntity.getId()) == null) { + if (PackagesManager.findInstallById(mGameEntity.getId()) == null) { mTabBarXinXiTv.performClick(); } } diff --git a/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java b/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java index 0999145ffb..5af0b8205b 100644 --- a/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java +++ b/app/src/main/java/com/gh/gamecenter/info/ConcernFragment.java @@ -26,7 +26,6 @@ import com.gh.common.util.CheckLoginUtils; import com.gh.common.util.ConcernUtils; import com.gh.common.util.DataCollectionUtils; import com.gh.common.util.ImageUtils; -import com.gh.common.util.PackageUtils; import com.gh.common.util.StringUtils; import com.gh.common.view.VerticalItemDecoration; import com.gh.gamecenter.ConcernActivity; @@ -38,9 +37,9 @@ import com.gh.gamecenter.R; import com.gh.gamecenter.ShareCardActivity; import com.gh.gamecenter.ShareCardPicActivity; import com.gh.gamecenter.WebActivity; -import com.gh.gamecenter.db.info.InstallInfo; import com.gh.gamecenter.entity.ConcernEntity; import com.gh.gamecenter.entity.GameEntity; +import com.gh.gamecenter.entity.GameInstall; import com.gh.gamecenter.entity.LibaoEntity; import com.gh.gamecenter.entity.LibaoStatusEntity; import com.gh.gamecenter.entity.MeEntity; @@ -48,7 +47,7 @@ import com.gh.gamecenter.entity.UserDataLibaoEntity; import com.gh.gamecenter.eventbus.EBConcernChanged; import com.gh.gamecenter.eventbus.EBNetworkState; import com.gh.gamecenter.eventbus.EBReuse; -import com.gh.gamecenter.manager.InstallManager; +import com.gh.gamecenter.manager.PackagesManager; import com.gh.gamecenter.manager.UserManager; import com.gh.gamecenter.normal.NormalFragment; import com.gh.gamecenter.retrofit.Response; @@ -60,7 +59,6 @@ import org.json.JSONArray; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.List; import java.util.Map; @@ -106,7 +104,6 @@ public class ConcernFragment extends NormalFragment implements SwipeRefreshLayou private List recommendGameList; // 推荐关注的游戏 private List installGameList; // 安装的游戏 private Map concernMap; // 记录选择关注 - private InstallManager mInstallManager; Runnable mRunnable = new Runnable() { @Override @@ -133,7 +130,6 @@ public class ConcernFragment extends NormalFragment implements SwipeRefreshLayou super.onCreate(savedInstanceState); recommendGameList = new ArrayList<>(); installGameList = new ArrayList<>(); - mInstallManager = new InstallManager(getActivity()); concernMap = new ArrayMap<>(); refreshLayout.setColorSchemeResources(R.color.theme); @@ -216,23 +212,9 @@ public class ConcernFragment extends NormalFragment implements SwipeRefreshLayou concern.setEnabled(true);//防止上一次关注按钮不可以,导致重新刷新后也不可用 AppExecutor.getIoExecutor().execute(() -> { - List installedList = mInstallManager.getAllInstall(); - // 获取第一次安装时间 - HashMap packageNames; - for (InstallInfo installInfo : installedList) { - long time = 0; - packageNames = installInfo.getPackageNames(); - for (String packageName : packageNames.keySet()) { - long installedTime = PackageUtils.getInstalledTime(getActivity(), packageName); - if (installedTime > time) { // 多版本获取最近安装版本时间 - time = installedTime; - } - } - installInfo.setTime(time); - } - + List installedList = PackagesManager.filterSameApk(PackagesManager.getInstalledList()); // 对已安装的游戏排序 - Collections.sort(installedList, (lhs, rhs) -> Long.compare(lhs.getTime(), rhs.getTime())); + Collections.sort(installedList, (lhs, rhs) -> Long.compare(lhs.getInstallTime(), rhs.getInstallTime())); List> sequences = new ArrayList<>(); List gameList = new ArrayList<>(); @@ -272,8 +254,8 @@ public class ConcernFragment extends NormalFragment implements SwipeRefreshLayou }); } - private void initRecommendConcern(List list, List gameList) { - for (InstallInfo info : list) { + private void initRecommendConcern(List list, List gameList) { + for (GameInstall info : list) { for (int i = 0; i < gameList.size(); i++) { if (info.getId().equals(gameList.get(i).getId())) { installGameList.add(gameList.get(i)); diff --git a/app/src/main/java/com/gh/gamecenter/install/PackageRepository.kt b/app/src/main/java/com/gh/gamecenter/install/PackageRepository.kt index ca7a711c47..d80cd78bc2 100644 --- a/app/src/main/java/com/gh/gamecenter/install/PackageRepository.kt +++ b/app/src/main/java/com/gh/gamecenter/install/PackageRepository.kt @@ -15,7 +15,7 @@ import com.gh.gamecenter.entity.GameUpdateEntity import com.gh.gamecenter.install.PackageRepository.gameInstalled import com.gh.gamecenter.install.PackageRepository.gameUpdate import com.gh.gamecenter.manager.FilterManager -import com.gh.gamecenter.manager.PackageManager +import com.gh.gamecenter.manager.PackagesManager import com.gh.gamecenter.retrofit.ObservableUtil import com.gh.gamecenter.retrofit.Response import com.gh.gamecenter.retrofit.RetrofitManager @@ -28,11 +28,11 @@ import retrofit2.HttpException /** * 游戏更新以及可插件化的数据统一放在 [gameUpdate] 由 [GameUpdateEntity.isPluggable] 字段区分 - * 已安装的应用列表[gameInstalled] 存在一个包对应多个游戏问题,如果需要一对一过滤可参考[PackageViewModel.filterSameApk] + * 已安装的应用列表[gameInstalled] 存在一个包对应多个游戏问题,如果需要一对一过滤可参考[PackagesManager.filterSameApk] * * 注意:View不能直接在该类对数据进行 新增/删除/修改/查询 操作 * 新增/删除/修改 可以委托 [PackageViewModel] 进行 - * 查询操作统一由 [PackageManager] 处理 + * 查询操作统一由 [PackagesManager] 处理 * */ object PackageRepository { @@ -232,12 +232,12 @@ object PackageRepository { } private fun notifyGameInstallData() { - PackageManager.initGameInstall(gameInstalled) + PackagesManager.initGameInstall(gameInstalled) gameInstalledLiveData.postValue(gameInstalled) } private fun notifyGameUpdateData() { - PackageManager.initGameUpdate(gameUpdate) + PackagesManager.initGameUpdate(gameUpdate) gameUpdateLiveData.postValue(gameUpdate) } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/install/PackageViewModel.kt b/app/src/main/java/com/gh/gamecenter/install/PackageViewModel.kt index b8fdad2581..8661b7a470 100644 --- a/app/src/main/java/com/gh/gamecenter/install/PackageViewModel.kt +++ b/app/src/main/java/com/gh/gamecenter/install/PackageViewModel.kt @@ -33,20 +33,6 @@ class PackageViewModel(application: Application, if (!TextUtils.isEmpty(pkgName)) repository.uninstalledGame(pkgName!!) } - /** - * 过滤同包名游戏,取最后一个 - * @return - */ - fun filterSameApk(installedList: List?): ArrayList { - val map = HashMap() - if (installedList != null) { - for (gameInstall in installedList) { - map[gameInstall.packageName] = gameInstall - } - } - return ArrayList(map.values) - } - /** * 检查数据(查看数据是否初始化完成,未完成则重新加载) * 网络状态变更时调用 diff --git a/app/src/main/java/com/gh/gamecenter/manager/InstallManager.java b/app/src/main/java/com/gh/gamecenter/manager/InstallManager.java deleted file mode 100644 index 0e63470459..0000000000 --- a/app/src/main/java/com/gh/gamecenter/manager/InstallManager.java +++ /dev/null @@ -1,145 +0,0 @@ -package com.gh.gamecenter.manager; - -import android.content.Context; - -import com.gh.common.util.PackageUtils; -import com.gh.gamecenter.db.InstallDao; -import com.gh.gamecenter.db.info.GameInfo; -import com.gh.gamecenter.db.info.InstallInfo; -import com.gh.gamecenter.eventbus.EBConcernChanged; -import com.halo.assistant.HaloApp; - -import org.greenrobot.eventbus.EventBus; - -import java.util.HashMap; -import java.util.List; - - -public class InstallManager { - - private static InstallManager sInstance; - private static final byte[] LOCK = new byte[0]; - - private Context context; - private InstallDao dao; - - public InstallManager(Context context) { - this.context = context; - dao = new InstallDao(context); - } - - public static InstallManager getInstance() { - if (sInstance == null) { - synchronized (LOCK) { - if (sInstance == null) { - sInstance = new InstallManager(HaloApp.getInstance().getApplication()); - } - } - } - return sInstance; - } - - /** - * 添加一个已安装的游戏 - */ - public void addInstall(InstallInfo entity) { - dao.add(entity); - } - - /** - * 获取某一个安装的游戏 - */ - public InstallInfo findInstallById(String id) { - return dao.find(id); - } - - /** - * 更新关注列表 - */ - public void updateInstall(InstallInfo entity) { - dao.update(entity); - } - - /** - * 根据GameEntity更新已安装的游戏 - */ - public void updateByEntity(GameInfo gameEntity) { - String packageName = gameEntity.getPackageName(); - InstallInfo installInfo = findInstallById(gameEntity.getId()); - if (installInfo != null) { - installInfo.setTime(System.currentTimeMillis()); - installInfo.setIcon(gameEntity.getGameIcon()); - if (gameEntity.getGameName() != null) { - installInfo.setGameName(gameEntity.getGameName()); - } - installInfo.getPackageNames().put(packageName, true); - int quantity = 0; - for (String key : installInfo.getPackageNames().keySet()) { - if (installInfo.getPackageNames().get(key)) { - quantity++; - } - } - installInfo.setInstalledQuantity(quantity); - updateInstall(installInfo); - } else { - installInfo = new InstallInfo(); - installInfo.setId(gameEntity.getId()); - installInfo.setIcon(gameEntity.getGameIcon()); - installInfo.setTime(System.currentTimeMillis()); - HashMap packageNames = new HashMap<>(); - packageNames.put(packageName, true); - installInfo.setPackageNames(packageNames); - installInfo.setWeight(1); - installInfo.setInstalledQuantity(1); - if (gameEntity.getGameName() != null) { - installInfo.setGameName(gameEntity.getGameName()); - } else { - installInfo.setGameName(PackageUtils.getNameByPackageName( - context, packageName)); - } - addInstall(installInfo); - } - } - - /** - * 根据包名 更新关注 - */ - public void updateByPackageName(String packageName) { - for (InstallInfo concernEntity : getAllInstall()) { - Boolean isInstalled = concernEntity.getPackageNames().get(packageName); - if (isInstalled != null && isInstalled) { - concernEntity.getPackageNames().put(packageName, false); - int quantity = 0; - for (String key : concernEntity.getPackageNames().keySet()) { - if (concernEntity.getPackageNames().get(key)) { - quantity++; - } - } - if (quantity == 0) { - deleteInstall(concernEntity.getId()); - } else { - concernEntity.setTime(System.currentTimeMillis()); - concernEntity.setInstalledQuantity(quantity); - concernEntity.getPackageNames().put(packageName, false); - updateInstall(concernEntity); - } - } - } - } - - /** - * 获取已安装列表(包含部分已卸载的数据和一些异常数据) - */ - public List getAllInstall() { - return dao.getAll(); - } - - /** - * 删除一个关注 - */ - public void deleteInstall(String id) { - dao.delete(id); - EventBus.getDefault().post(new EBConcernChanged(id, false)); - } - -} diff --git a/app/src/main/java/com/gh/gamecenter/manager/PackageManager.kt b/app/src/main/java/com/gh/gamecenter/manager/PackagesManager.kt similarity index 63% rename from app/src/main/java/com/gh/gamecenter/manager/PackageManager.kt rename to app/src/main/java/com/gh/gamecenter/manager/PackagesManager.kt index 0c81e26a8e..7d24b124b4 100644 --- a/app/src/main/java/com/gh/gamecenter/manager/PackageManager.kt +++ b/app/src/main/java/com/gh/gamecenter/manager/PackagesManager.kt @@ -4,7 +4,7 @@ import android.text.TextUtils import com.gh.gamecenter.entity.GameInstall import com.gh.gamecenter.entity.GameUpdateEntity -object PackageManager { +object PackagesManager { private val updateAndPluginList = ArrayList() private val installedList = ArrayList() @@ -40,13 +40,37 @@ object PackageManager { /** * 获取已安装游戏的包名list * - * @return 包名list + * @return */ @JvmStatic fun getInstalledList(): ArrayList { return installedList } + /** + * 获取过滤同包名已安装游戏的包名list + * + * @return + */ + @JvmStatic + fun getFilterSameApkInstalledList(): ArrayList { + return filterSameApk(installedList) + } + + /** + * 获取过滤同游戏已安装游戏的包名list + * + * @return + */ + @JvmStatic + fun getFilterSameGameInstalledList(): ArrayList { + val map = HashMap() + for (gameInstall in filterSameApk(installedList)) { + map[gameInstall.id!!] = gameInstall + } + return ArrayList(map.values) + } + /** * 获取可更新游戏列表 * @@ -100,4 +124,33 @@ object PackageManager { } return false } + + /** + * 根据游戏Id获取已安装的游戏数据 + */ + @JvmStatic + fun findInstallById(gameId: String?): GameInstall? { + if (TextUtils.isEmpty(gameId)) return null + for (gameInstall in installedList) { + if (gameId == gameInstall.id) { + return gameInstall + } + } + return null + } + + /** + * 过滤同包名游戏,取最后一个 + * @return + */ + @JvmStatic + fun filterSameApk(installedList: List?): ArrayList { + val map = HashMap() + if (installedList != null) { + for (gameInstall in installedList) { + map[gameInstall.packageName] = gameInstall + } + } + return ArrayList(map.values) + } } diff --git a/app/src/main/java/com/gh/gamecenter/qa/select/SelectGameDialogAdapter.java b/app/src/main/java/com/gh/gamecenter/qa/select/SelectGameDialogAdapter.java index c6def9f6b0..4d4e7b4a26 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/select/SelectGameDialogAdapter.java +++ b/app/src/main/java/com/gh/gamecenter/qa/select/SelectGameDialogAdapter.java @@ -12,9 +12,9 @@ import android.widget.ProgressBar; import com.gh.common.util.BitmapUtils; import com.gh.common.util.ImageUtils; import com.gh.gamecenter.R; -import com.gh.gamecenter.db.info.InstallInfo; +import com.gh.gamecenter.entity.GameInstall; import com.gh.gamecenter.entity.InstallGameEntity; -import com.gh.gamecenter.manager.InstallManager; +import com.gh.gamecenter.manager.PackagesManager; import com.gh.gamecenter.qa.entity.AskGameSelectEntity; import com.gh.gamecenter.retrofit.Response; import com.gh.gamecenter.suggest.SelectGameViewHolder; @@ -22,9 +22,7 @@ import com.lightgame.adapter.BaseRecyclerAdapter; import java.io.File; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; -import java.util.Map; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; @@ -39,7 +37,7 @@ import io.reactivex.schedulers.Schedulers; public class SelectGameDialogAdapter extends BaseRecyclerAdapter { private OnGameSelectListener listener; - private List gameList; + private List gameList; private List appList; @@ -64,32 +62,22 @@ public class SelectGameDialogAdapter extends BaseRecyclerAdapter() { @Override public void subscribe(ObservableEmitter emitter) { + PackageManager pm = mContext.getPackageManager(); List installedPackages = pm.getInstalledPackages(0); + ArrayList installedList = PackagesManager.getFilterSameGameInstalledList(); - Map arrInstallPackage = new HashMap<>(); - InstallManager cManager = new InstallManager(mContext); - for (InstallInfo installInfo : cManager.getAllInstall()) { - for (String s : installInfo.getPackageNames().keySet()) { - if (installInfo.getPackageNames().get(s)) { - arrInstallPackage.put(s, installInfo); - } - } - } // 排除已开通社区 if (openCommunityList != null) { - List removeList = new ArrayList<>(); for (AskGameSelectEntity opened : openCommunityList) { - for (String s : arrInstallPackage.keySet()) { - if (arrInstallPackage.get(s).getId().equals(opened.getGame().getId())) { - removeList.add(s); + for (GameInstall gameInstall : installedList) { + if (gameInstall.getId().equals(opened.getGame().getId())) { + installedList.remove(gameInstall); + break; } } } - for (String s : removeList) { - arrInstallPackage.remove(s); - } } for (PackageInfo installedPackage : installedPackages) { @@ -107,10 +95,16 @@ public class SelectGameDialogAdapter extends BaseRecyclerAdapter { private List mRecommendGameList; private List mConcernGameList; - private InstallManager mInstallManager; - private Toast mToast; private String mEntrance; @@ -61,7 +59,6 @@ class MyConcernRecommendAdapter extends BaseRecyclerAdapter { mEntrance = entrance; mConcernGameList = concernGame; mRecommendGameList = new ArrayList<>(); - mInstallManager = new InstallManager(mContext); init(); } @@ -69,8 +66,13 @@ class MyConcernRecommendAdapter extends BaseRecyclerAdapter { private void init() { // 获取已安装游戏的digest List> sequences = new ArrayList<>(); - for (InstallInfo installInfo : mInstallManager.getAllInstall()) { - sequences.add(RetrofitManager.getInstance(mContext).getApi().getGameDigest(installInfo.getId())); + List filterList = new ArrayList<>(); + for (GameInstall installInfo : PackagesManager.getFilterSameApkInstalledList()) { + String gameId = installInfo.getId(); + if (!filterList.contains(gameId)) { + sequences.add(RetrofitManager.getInstance(mContext).getApi().getGameDigest(gameId)); + filterList.add(gameId); + } } Observable.mergeDelayError(sequences) .subscribeOn(Schedulers.io())