From 983bbfc3093835e6289a29ceb15aec9eeaa3dfdc Mon Sep 17 00:00:00 2001 From: juntao Date: Wed, 29 Jun 2022 14:41:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9B=B4=E6=96=B0=E4=B8=8D=E5=8F=8A=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/gh/download/DownloadManager.java | 14 ++++++++++++++ .../com/gh/gamecenter/LibaoDetailActivity.java | 5 +++++ .../com/gh/gamecenter/NewsDetailActivity.java | 5 +++++ .../com/gh/gamecenter/amway/AmwayFragment.kt | 13 +++++++++---- .../gamecenter/catalog/NewCatalogListFragment.kt | 16 +++++++++++----- .../category/NewCategoryListFragment.kt | 8 ++++++-- .../category2/CategoryV2ListFragment.kt | 7 +++++-- .../java/com/gh/gamecenter/game/GameFragment.kt | 12 ++++++++---- .../detail/GameCollectionDetailFragment.kt | 4 ++++ .../gamecenter/gamedetail/GameDetailFragment.kt | 4 ++++ .../gamedetail/rating/RatingReplyActivity.kt | 6 +++++- .../java/com/gh/gamecenter/home/HomeFragment.kt | 4 ++++ .../qa/video/detail/ForumVideoDetailFragment.kt | 4 ++++ .../gamecenter/search/SearchGameIndexFragment.kt | 6 +++++- .../search/SearchGameResultFragment.kt | 4 ++++ .../simulatorgame/SimulatorGameListFragment.kt | 13 ++++++++----- .../gh/gamecenter/subject/SubjectListFragment.kt | 10 +++++++--- .../com/gh/gamecenter/tag/TagsListFragment.kt | 12 ++++++++---- .../com/gh/vspace/VDownloadManagerFragment.kt | 4 ++++ .../java/com/gh/vspace/VSpaceLoadingFragment.kt | 6 +++--- 20 files changed, 123 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/gh/download/DownloadManager.java b/app/src/main/java/com/gh/download/DownloadManager.java index 6d03bb3bf8..c85d1568e9 100644 --- a/app/src/main/java/com/gh/download/DownloadManager.java +++ b/app/src/main/java/com/gh/download/DownloadManager.java @@ -846,6 +846,8 @@ public class DownloadManager implements DownloadStatusListener { public void addObserver(DataWatcher dataWatcher) { Utils.log(DownloadManager.class.getSimpleName(), "addObserver"); DataChanger.INSTANCE.addObserver(dataWatcher); + + notifyDownloadedStatusASAP(dataWatcher); } /** @@ -856,6 +858,18 @@ public class DownloadManager implements DownloadStatusListener { DataChanger.INSTANCE.deleteObserver(dataWatcher); } + /** + * 立马通知 dataWatcher 更新已下载完的任务状态,这里的下载完成是持久状态,不是瞬时状态 + * + */ + private void notifyDownloadedStatusASAP(DataWatcher dataWatcher) { + for (DownloadEntity downloadEntity : getAllDownloadEntitySnapshots()) { + if (downloadEntity.getStatus() == DownloadStatus.done) { + dataWatcher.onDataInit(downloadEntity); + } + } + } + /** * 初始化下载服务 */ diff --git a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java index 12650cb58e..6ed2dd08f5 100644 --- a/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/LibaoDetailActivity.java @@ -142,6 +142,11 @@ public class LibaoDetailActivity extends ToolBarActivity implements LibaoDetailA } } } + + @Override + public void onDataInit(@NonNull DownloadEntity downloadEntity) { + onDataChanged(downloadEntity); + } }; diff --git a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java index 6d1ec9dcd3..2a528c0daa 100644 --- a/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java +++ b/app/src/main/java/com/gh/gamecenter/NewsDetailActivity.java @@ -140,6 +140,11 @@ public class NewsDetailActivity extends DownloadToolbarActivity implements OnCli } } } + + @Override + public void onDataInit(@NonNull DownloadEntity downloadEntity) { + onDataChanged(downloadEntity); + } }; Runnable runnable = new Runnable() { diff --git a/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt b/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt index cc7ac99b15..a1514979d0 100644 --- a/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/amway/AmwayFragment.kt @@ -9,12 +9,9 @@ import androidx.core.content.ContextCompat import androidx.core.view.ViewCompat import androidx.recyclerview.widget.RecyclerView import com.ethanhua.skeleton.Skeleton -import com.gh.gamecenter.core.utils.TimeElapsedHelper import com.gh.common.exposure.ExposureListener import com.gh.common.exposure.ExposureSource -import com.gh.common.util.* import com.gh.common.util.DialogUtils -import com.gh.gamecenter.common.view.VerticalItemDecoration import com.gh.common.xapk.XapkInstaller import com.gh.common.xapk.XapkUnzipStatus import com.gh.download.DownloadManager @@ -24,7 +21,11 @@ import com.gh.gamecenter.baselist.LazyListFragment import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.* -import com.gh.gamecenter.core.utils.* +import com.gh.gamecenter.common.view.VerticalItemDecoration +import com.gh.gamecenter.core.utils.ClickUtils +import com.gh.gamecenter.core.utils.DisplayUtils +import com.gh.gamecenter.core.utils.MtaHelper +import com.gh.gamecenter.core.utils.TimeElapsedHelper import com.gh.gamecenter.databinding.FragmentAmwayAlBinding import com.gh.gamecenter.databinding.FragmentAmwayBinding import com.gh.gamecenter.entity.RatingComment @@ -64,6 +65,10 @@ class AmwayFragment : LazyListFragment() { showUnzipFailureDialog(downloadEntity) } } + + override fun onDataInit(downloadEntity: DownloadEntity) { + mAdapter?.notifyItemByDownload(downloadEntity) + } } override fun onCreate(savedInstanceState: Bundle?) { diff --git a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt index 979389be63..0c94c8485a 100644 --- a/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/catalog/NewCatalogListFragment.kt @@ -3,22 +3,24 @@ package com.gh.gamecenter.catalog import android.os.Bundle import android.view.View import com.ethanhua.skeleton.Skeleton -import com.gh.gamecenter.common.constant.Constants import com.gh.common.exposure.ExposureListener import com.gh.common.exposure.ExposureSource import com.gh.common.util.DialogUtils -import com.gh.gamecenter.common.constant.EntranceConsts -import com.gh.gamecenter.common.utils.observeNonNull -import com.gh.gamecenter.common.utils.viewModelProvider import com.gh.common.view.CatalogFilterView import com.gh.common.xapk.XapkInstaller import com.gh.common.xapk.XapkUnzipStatus import com.gh.download.DownloadManager import com.gh.gamecenter.R import com.gh.gamecenter.baselist.ListFragment +import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.constant.EntranceConsts +import com.gh.gamecenter.common.utils.observeNonNull import com.gh.gamecenter.common.utils.toColor +import com.gh.gamecenter.common.utils.viewModelProvider import com.gh.gamecenter.databinding.FragmentCatalogListBinding -import com.gh.gamecenter.entity.* +import com.gh.gamecenter.entity.CatalogEntity +import com.gh.gamecenter.entity.GameEntity +import com.gh.gamecenter.entity.SubjectSettingEntity import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.eventbus.EBPackage import com.lightgame.download.DataWatcher @@ -42,6 +44,10 @@ class NewCatalogListFragment : ListFragment showUnzipFailureDialog(downloadEntity) } } + + override fun onDataInit(downloadEntity: DownloadEntity) { + mAdapter?.notifyItemByDownload(downloadEntity) + } } private var mBinding: FragmentCatalogListBinding? = null diff --git a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt index 0cede00121..15acd24cf0 100644 --- a/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/category/NewCategoryListFragment.kt @@ -4,9 +4,8 @@ import android.os.Bundle import android.view.View import androidx.recyclerview.widget.LinearLayoutManager import com.ethanhua.skeleton.Skeleton -import com.gh.gamecenter.common.constant.Constants import com.gh.common.exposure.ExposureListener -import com.gh.common.util.* +import com.gh.common.util.DialogUtils import com.gh.common.view.ConfigFilterView import com.gh.common.xapk.XapkInstaller import com.gh.common.xapk.XapkUnzipStatus @@ -14,6 +13,7 @@ import com.gh.download.DownloadManager import com.gh.gamecenter.R import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.baselist.ListFragment +import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.observeNonNull import com.gh.gamecenter.common.utils.toColor @@ -45,6 +45,10 @@ class NewCategoryListFragment : ListFragment showUnzipFailureDialog(downloadEntity) } } + + override fun onDataInit(downloadEntity: DownloadEntity) { + mAdapter?.notifyItemByDownload(downloadEntity) + } } override fun getLayoutId() = 0 diff --git a/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt b/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt index 488be43ddd..d2304afa3f 100644 --- a/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/game/GameFragment.kt @@ -10,22 +10,22 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.ethanhua.skeleton.Skeleton import com.ethanhua.skeleton.ViewSkeletonScreen -import com.gh.gamecenter.common.base.fragment.LazyFragment -import com.gh.gamecenter.common.constant.Constants import com.gh.common.exposure.ExposureListener import com.gh.common.exposure.ExposureSource -import com.gh.common.util.* -import com.gh.gamecenter.common.view.FixLinearLayoutManager +import com.gh.common.util.DialogUtils import com.gh.common.xapk.XapkInstaller import com.gh.common.xapk.XapkUnzipStatus import com.gh.download.DownloadManager import com.gh.gamecenter.R import com.gh.gamecenter.baselist.LoadStatus +import com.gh.gamecenter.common.base.fragment.LazyFragment +import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.dip2px import com.gh.gamecenter.common.utils.goneIf import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.common.utils.visibleIf +import com.gh.gamecenter.common.view.FixLinearLayoutManager import com.gh.gamecenter.databinding.FragmentGameBinding import com.gh.gamecenter.eventbus.EBDownloadStatus import com.gh.gamecenter.eventbus.EBPackage @@ -58,6 +58,10 @@ class GameFragment : LazyFragment() { showUnzipFailureDialog(downloadEntity) } } + + override fun onDataInit(downloadEntity: DownloadEntity) { + mListAdapter.notifyItemByDownload(downloadEntity) + } } override fun getRealLayoutId() = R.layout.fragment_game 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 ecf8a068aa..5352a83b4b 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 @@ -87,6 +87,10 @@ class GameCollectionDetailFragment : showUnzipFailureDialog(downloadEntity) } } + + override fun onDataInit(downloadEntity: DownloadEntity) { + mAdapter?.notifyItemByDownload(downloadEntity) + } } override fun getLayoutId() = 0 diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt index 8d4c38088b..7e985ddb29 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -190,6 +190,10 @@ class GameDetailFragment : ToolbarFragment(), IScrollable { } } } + + override fun onDataInit(downloadEntity: DownloadEntity) { + onDataChanged(downloadEntity) + } } // 下载按钮ViewHolder diff --git a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt index 033562faea..4d580f32c1 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/rating/RatingReplyActivity.kt @@ -12,8 +12,8 @@ import androidx.core.widget.doOnTextChanged import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.RecyclerView import com.gh.common.exposure.ExposureManager -import com.gh.common.util.* import com.gh.common.util.NewLogUtils +import com.gh.common.util.SyncDataBetweenPageHelper import com.gh.download.DownloadManager import com.gh.gamecenter.R import com.gh.gamecenter.baselist.ListActivity @@ -65,6 +65,10 @@ class RatingReplyActivity : ListActivity() { @@ -36,6 +35,10 @@ class SimulatorGameListFragment : ListFragment { diff --git a/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt b/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt index 7fabb2fdb1..bd73d54e78 100644 --- a/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/subject/SubjectListFragment.kt @@ -4,19 +4,19 @@ import android.view.View import androidx.lifecycle.ViewModelProviders import androidx.recyclerview.widget.RecyclerView import com.ethanhua.skeleton.Skeleton -import com.gh.gamecenter.common.constant.Constants import com.gh.common.exposure.ExposureListener -import com.gh.common.util.* -import com.gh.gamecenter.common.view.SpacingItemDecoration +import com.gh.common.util.DialogUtils import com.gh.common.xapk.XapkInstaller import com.gh.common.xapk.XapkUnzipStatus import com.gh.download.DownloadManager import com.gh.gamecenter.R import com.gh.gamecenter.baselist.LazyListFragment import com.gh.gamecenter.baselist.LoadType +import com.gh.gamecenter.common.constant.Constants import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.common.utils.toColor import com.gh.gamecenter.common.utils.viewModelProviderFromParent +import com.gh.gamecenter.common.view.SpacingItemDecoration import com.gh.gamecenter.core.utils.DisplayUtils import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SubjectData @@ -50,6 +50,10 @@ class SubjectListFragment : LazyListFragment() showUnzipFailureDialog(downloadEntity) } } + + override fun onDataInit(downloadEntity: DownloadEntity) { + mAdapter?.notifyItemByDownload(downloadEntity) + } } override fun getStubLayoutId() = R.layout.fragment_list_base_skeleton_stub diff --git a/app/src/main/java/com/gh/gamecenter/tag/TagsListFragment.kt b/app/src/main/java/com/gh/gamecenter/tag/TagsListFragment.kt index b12721769c..e581c5090a 100644 --- a/app/src/main/java/com/gh/gamecenter/tag/TagsListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/tag/TagsListFragment.kt @@ -4,13 +4,9 @@ import android.os.Bundle import android.view.View import androidx.recyclerview.widget.LinearLayoutManager import com.ethanhua.skeleton.Skeleton -import com.gh.gamecenter.common.constant.Constants import com.gh.common.exposure.ExposureListener import com.gh.common.exposure.ExposureSource import com.gh.common.util.DialogUtils -import com.gh.gamecenter.common.utils.observeNonNull -import com.gh.gamecenter.common.utils.toColor -import com.gh.gamecenter.common.utils.viewModelProvider import com.gh.common.view.ConfigFilterView import com.gh.common.xapk.XapkInstaller import com.gh.common.xapk.XapkUnzipStatus @@ -19,6 +15,10 @@ import com.gh.gamecenter.R import com.gh.gamecenter.baselist.ListAdapter import com.gh.gamecenter.baselist.ListFragment import com.gh.gamecenter.baselist.LoadType +import com.gh.gamecenter.common.constant.Constants +import com.gh.gamecenter.common.utils.observeNonNull +import com.gh.gamecenter.common.utils.toColor +import com.gh.gamecenter.common.utils.viewModelProvider import com.gh.gamecenter.databinding.FragmentTagsBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SubjectSettingEntity @@ -46,6 +46,10 @@ class TagsListFragment : ListFragment() { showUnzipFailureDialog(downloadEntity) } } + + override fun onDataInit(downloadEntity: DownloadEntity) { + mAdapter?.notifyItemByDownload(downloadEntity) + } } private lateinit var mViewModel: TagsListViewModel diff --git a/app/src/main/java/com/gh/vspace/VDownloadManagerFragment.kt b/app/src/main/java/com/gh/vspace/VDownloadManagerFragment.kt index 7b3aec3722..1ff5950bd3 100644 --- a/app/src/main/java/com/gh/vspace/VDownloadManagerFragment.kt +++ b/app/src/main/java/com/gh/vspace/VDownloadManagerFragment.kt @@ -39,6 +39,10 @@ class VDownloadManagerFragment : onLoadRefresh() } } + + override fun onDataInit(downloadEntity: DownloadEntity) { + mAdapter.notifyItemByDownload(downloadEntity) + } } override fun provideListAdapter(): ListAdapter<*> = mAdapter diff --git a/app/src/main/java/com/gh/vspace/VSpaceLoadingFragment.kt b/app/src/main/java/com/gh/vspace/VSpaceLoadingFragment.kt index f42bbbd5f6..fc6cfea806 100644 --- a/app/src/main/java/com/gh/vspace/VSpaceLoadingFragment.kt +++ b/app/src/main/java/com/gh/vspace/VSpaceLoadingFragment.kt @@ -4,12 +4,12 @@ import android.animation.ValueAnimator import android.os.Bundle import android.view.View import android.view.animation.DecelerateInterpolator +import com.gh.download.DownloadManager import com.gh.gamecenter.common.base.fragment.BaseFragment import com.gh.gamecenter.common.constant.EntranceConsts import com.gh.gamecenter.core.utils.ToastUtils import com.gh.gamecenter.databinding.FragmentVspaceLoadingBinding import com.gh.gamecenter.entity.GameEntity -import com.lightgame.download.DataChanger import com.lightgame.download.DataWatcher import com.lightgame.download.DownloadEntity import com.lightgame.download.DownloadStatus.* @@ -121,7 +121,7 @@ class VSpaceLoadingFragment : BaseFragment() { super.onResume() if (!mIsInstallation) { - DataChanger.addObserver(mDataWatcher) + DownloadManager.getInstance().addObserver(mDataWatcher) } } @@ -129,7 +129,7 @@ class VSpaceLoadingFragment : BaseFragment() { super.onPause() if (!mIsInstallation) { - DataChanger.deleteObserver(mDataWatcher) + DownloadManager.getInstance().removeObserver(mDataWatcher) } }