diff --git a/app/src/gdt/java/com/gh/gamecenter/GdtHelper.kt b/app/src/gdt/java/com/gh/gamecenter/GdtHelper.kt index efc5d52491..4e56e67489 100644 --- a/app/src/gdt/java/com/gh/gamecenter/GdtHelper.kt +++ b/app/src/gdt/java/com/gh/gamecenter/GdtHelper.kt @@ -31,6 +31,8 @@ object GdtHelper { GDTAction.init(application, "1111012969", "9d3d9da5b0948a317c03d08f14d445dc") } else if (channel == "GH_729") { GDTAction.init(application, "1111013063", "f53dabf458a356b101d99fc4069eb7f1") + } else if (channel == "GH_765") { + GDTAction.init(application, "1111327925", "588d503f0990f98f9b2394fbb795c570") } else { GDTAction.init(application, "1110680399", "f5ddaafbf520d7d7385499232a408d0a") } diff --git a/app/src/main/java/com/gh/common/exposure/ExposureManager.kt b/app/src/main/java/com/gh/common/exposure/ExposureManager.kt index 5db4523ef3..28ed6b47f2 100644 --- a/app/src/main/java/com/gh/common/exposure/ExposureManager.kt +++ b/app/src/main/java/com/gh/common/exposure/ExposureManager.kt @@ -1,8 +1,10 @@ package com.gh.common.exposure +import android.database.sqlite.SQLiteFullException import com.aliyun.sls.android.sdk.model.LogGroup import com.gh.common.exposure.time.TimeUtil import com.gh.common.util.toJson +import com.gh.common.util.toastInInternalRelease import com.gh.common.util.tryWithDefaultCatch import com.gh.gamecenter.BuildConfig import com.gh.loghub.LgLOG @@ -40,8 +42,13 @@ object ExposureManager { loghubHelper.init(HaloApp.getInstance().application, ENDPOINT, PROJECT, LOG_STORE) { TimeUtil.currentTimeMillis() } exposureExecutor = excutor exposureExecutor?.execute { - val eventList = exposureDao.getAll() - exposureSet.addAll(eventList) + try { + val eventList = exposureDao.getAll() + exposureSet.addAll(eventList) + } catch (e: SQLiteFullException) { + e.printStackTrace() + toastInInternalRelease("数据库/磁盘已满,初始化曝光失败") + } } } diff --git a/app/src/main/java/com/gh/common/history/HistoryHelper.kt b/app/src/main/java/com/gh/common/history/HistoryHelper.kt index ca740bc26b..ee3efa0e90 100644 --- a/app/src/main/java/com/gh/common/history/HistoryHelper.kt +++ b/app/src/main/java/com/gh/common/history/HistoryHelper.kt @@ -69,37 +69,37 @@ object HistoryHelper { @JvmStatic fun insertNewsEntity(newsEntity: NewsEntity) { newsEntity.orderTag = System.currentTimeMillis() - runOnIoThread { HistoryDatabase.instance.newsDao().addNews(newsEntity) } + runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.newsDao().addNews(newsEntity) } } } @JvmStatic fun deleteNewsEntity(newsId: String) { - runOnIoThread { HistoryDatabase.instance.newsDao().deleteNews(NewsEntity().apply { id = newsId }) } + runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.newsDao().deleteNews(NewsEntity().apply { id = newsId }) } } } @JvmStatic fun deleteGameEntity(gameId: String) { - runOnIoThread { HistoryDatabase.instance.gameDao().deleteGame(HistoryGameEntity(id = gameId)) } + runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.gameDao().deleteGame(HistoryGameEntity(id = gameId)) } } } @JvmStatic fun deleteArticleEntity(articleId: String) { - runOnIoThread { HistoryDatabase.instance.articleDao().deleteArticle(ArticleEntity(id = articleId)) } + runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.articleDao().deleteArticle(ArticleEntity(id = articleId)) } } } @JvmStatic fun deleteAnswerEntity(answerId: String) { - runOnIoThread { HistoryDatabase.instance.answerDao().deleteAnswer(AnswerEntity().apply { primaryKey = answerId }) } + runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.answerDao().deleteAnswer(AnswerEntity().apply { primaryKey = answerId }) } } } @JvmStatic fun deleteVideoEntity(videoId: String) { - runOnIoThread { HistoryDatabase.instance.videoHistoryDao().deleteVideo(MyVideoEntity().apply { id = videoId }) } + runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.videoHistoryDao().deleteVideo(MyVideoEntity().apply { id = videoId }) } } } @JvmStatic fun emptyDatabase() { - runOnIoThread { HistoryDatabase.instance.clearAllTables() } + runOnIoThread { tryCatchInRelease { HistoryDatabase.instance.clearAllTables() } } } private fun convertArticleDetailToArticle(articleDetailEntity: ArticleDetailEntity): ArticleEntity { diff --git a/app/src/main/java/com/gh/common/util/DialogUtils.java b/app/src/main/java/com/gh/common/util/DialogUtils.java index dc0d50621a..869c89bc9c 100644 --- a/app/src/main/java/com/gh/common/util/DialogUtils.java +++ b/app/src/main/java/com/gh/common/util/DialogUtils.java @@ -1953,7 +1953,7 @@ public class DialogUtils { return dialog; } - public static void showEnergyDialog(Context context, String userName, String energy) { + public static void showEnergyDialog(Context context, String userName, int energy) { context = checkDialogContext(context); final Dialog dialog = new Dialog(context, R.style.DialogWindowTransparent); diff --git a/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt b/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt index 56029d3e03..1f8d6e43ec 100644 --- a/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt +++ b/app/src/main/java/com/gh/common/util/HomePluggableHelper.kt @@ -1,5 +1,6 @@ package com.gh.common.util +import android.database.sqlite.SQLiteFullException import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.HomePluggableFilterEntity import com.gh.gamecenter.room.AppDatabase @@ -38,13 +39,18 @@ object HomePluggableHelper { @JvmStatic fun activationFilterData() { - val filterList = mHomePluggableFilterDao.getDataByActive(false) + try { + val filterList = mHomePluggableFilterDao.getDataByActive(false) - if (filterList != null) { - for (entity in filterList) { - entity.active = true + if (filterList != null) { + for (entity in filterList) { + entity.active = true + } + mHomePluggableFilterDao.addData(filterList) } - tryCatchInRelease { mHomePluggableFilterDao.addData(filterList) } + } catch (e: SQLiteFullException) { + e.printStackTrace() + toastInInternalRelease("数据库/磁盘已满,插件筛选失败") } } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt b/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt index 6c3a27145d..ae7a761350 100644 --- a/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt +++ b/app/src/main/java/com/gh/common/videolog/VideoRecordUtils.kt @@ -2,7 +2,9 @@ package com.gh.common.videolog import android.annotation.SuppressLint import android.app.Application +import android.database.sqlite.SQLiteFullException import com.gh.common.util.toRequestBody +import com.gh.common.util.toastInInternalRelease import com.gh.gamecenter.manager.UserManager import com.gh.gamecenter.retrofit.BiResponse import com.gh.gamecenter.retrofit.RetrofitManager @@ -27,8 +29,13 @@ object VideoRecordUtils { videoRecordExecutor = executor videoRecordExecutor?.execute { - val recordList = videoRecordDao.getAll() - videoRecordSet.addAll(recordList) + try { + val recordList = videoRecordDao.getAll() + videoRecordSet.addAll(recordList) + } catch (e: SQLiteFullException) { + e.printStackTrace() + toastInInternalRelease("数据库/磁盘已满,写入视频新日志失败") + } } } @@ -40,6 +47,9 @@ object VideoRecordUtils { videoRecordDao.insert(entity) } catch (e: Exception) { e.printStackTrace() + if (e is SQLiteFullException) { + toastInInternalRelease("数据库/磁盘已满,写入视频新日志失败") + } } if (videoRecordSet.size >= STORE_SIZE) { commitVideoRecord() @@ -53,7 +63,11 @@ object VideoRecordUtils { uploadVideoRecord() val exposureList = videoRecordSet.toList() videoRecordSet.removeAll(exposureList) - videoRecordDao.deleteMany(exposureList) + try { + videoRecordDao.deleteMany(exposureList) + } catch (e: SQLiteFullException) { + toastInInternalRelease("数据库/磁盘已满,删除视频日志失败") + } } } diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 8ab8aab322..c226f042a0 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -169,8 +169,11 @@ public class MainActivity extends BaseActivity { if (!this.isFinishing()) { LogUtils.uploadDevice(lunchType); ActivationHelper.sendActivationInfo(); - // 第一次打开App删除模拟器游戏记录 - SimulatorGameManager.deleteAllSimulatorGame(); + // 第一次打开App删除模拟器游戏记录(不包括更新版本) + if (HaloApp.getInstance().isBrandNewInstall) { + SimulatorGameManager.deleteAllSimulatorGame(); + + } } }, 2000L); getPluginUpdate(); diff --git a/app/src/main/java/com/gh/gamecenter/energy/EnergyCenterFragment.kt b/app/src/main/java/com/gh/gamecenter/energy/EnergyCenterFragment.kt index 62d3f5e231..03c8856eae 100644 --- a/app/src/main/java/com/gh/gamecenter/energy/EnergyCenterFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/energy/EnergyCenterFragment.kt @@ -15,6 +15,7 @@ import com.gh.common.util.* import com.gh.gamecenter.R import com.gh.gamecenter.databinding.FragmentEnergyCenterBinding import com.gh.gamecenter.entity.CommodityCategoryEntity +import com.gh.gamecenter.entity.UserInfoEntity import com.gh.gamecenter.manager.UserManager import com.gh.gamecenter.personalhome.UserHomeViewModel import com.gh.gamecenter.user.UserViewModel @@ -32,6 +33,8 @@ class EnergyCenterFragment : BaseLazyFragment() { private val mTitleList = listOf("赚光能", "兑换区") private var mFragmentsList = ArrayList() private var mCategoryList = ArrayList() + private var mUserInfo: UserInfoEntity? = null + private var mEnergy = 0 override fun getLayoutId() = 0 @@ -85,6 +88,7 @@ class EnergyCenterFragment : BaseLazyFragment() { mUserViewModel.loginObsUserinfo.observeNonNull(viewLifecycleOwner) { if (it.data != null) { + mUserInfo = it.data mUserHomeViewModel.userId = UserManager.getInstance().userId mUserHomeViewModel.getUserEnergy() if (mFragmentsList.isNotEmpty()) { @@ -94,7 +98,8 @@ class EnergyCenterFragment : BaseLazyFragment() { } mUserHomeViewModel.energy.observeNonNull(viewLifecycleOwner) { - mBinding.userEnergy.text = if (it > 9999) "9999+光能" else "${it}光能" + mEnergy = it + mBinding.userEnergy.text = "${it}光能" } mBinding.run { @@ -213,12 +218,18 @@ class EnergyCenterFragment : BaseLazyFragment() { } } - @OnClick(R.id.backIv, R.id.energyRecord, R.id.lotteryCenter, R.id.signSwitch, R.id.signBubble, + @OnClick(R.id.backIv, R.id.userEnergy, R.id.energyRecord, R.id.lotteryCenter, R.id.signSwitch, R.id.signBubble, R.id.oneDay, R.id.twoDay, R.id.threeDay, R.id.fourDay, R.id.fiveDay, R.id.sixDay, R.id.sevenDay) fun onViewClicked(v: View) { when (v.id) { R.id.backIv -> requireActivity().finish() + R.id.userEnergy -> { + mUserInfo?.run { + DialogUtils.showEnergyDialog(requireContext(), name, mEnergy) + } + } + R.id.energyRecord -> { ifLogin("光能中心-光能记录") { DirectUtils.directToEnergyRecord(requireContext()) diff --git a/app/src/main/java/com/gh/gamecenter/energy/EnergyHouseFragment.kt b/app/src/main/java/com/gh/gamecenter/energy/EnergyHouseFragment.kt index 78ce201924..9d18451fb6 100644 --- a/app/src/main/java/com/gh/gamecenter/energy/EnergyHouseFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/energy/EnergyHouseFragment.kt @@ -42,6 +42,7 @@ class EnergyHouseFragment: BaseLazyFragment() { private val mRollNotices = ArrayList() private var mCurrentSizeIndex = 0 private var mCurrentSize = SubjectSettingEntity.Size() + private var mEnergy = 0 override fun getLayoutId() = 0 @@ -87,7 +88,8 @@ class EnergyHouseFragment: BaseLazyFragment() { } mUserHomeViewModel.energy.observeNonNull(viewLifecycleOwner) { - mBinding.userEnergy.text = if (it > 9999) "9999+光能" else "${it}光能" + mEnergy = it + mBinding.userEnergy.text = "${it}光能" } mEnergyHouseViewModel.rollNotices.observeNonNull(viewLifecycleOwner) { list -> @@ -293,7 +295,7 @@ class EnergyHouseFragment: BaseLazyFragment() { R.id.userEnergy -> { mUserInfo?.run { - DialogUtils.showEnergyDialog(requireContext(), name, mBinding.userEnergy.text.toString()) + DialogUtils.showEnergyDialog(requireContext(), name, mEnergy) } } diff --git a/app/src/main/java/com/gh/gamecenter/energy/TaskAdapter.kt b/app/src/main/java/com/gh/gamecenter/energy/TaskAdapter.kt index 2f711dc15a..1d3ecbeece 100644 --- a/app/src/main/java/com/gh/gamecenter/energy/TaskAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/energy/TaskAdapter.kt @@ -12,6 +12,7 @@ import com.gh.common.util.* import com.gh.gamecenter.R import com.gh.gamecenter.adapter.viewholder.FooterViewHolder import com.gh.gamecenter.baselist.ListAdapter +import com.gh.gamecenter.baselist.LoadStatus import com.gh.gamecenter.databinding.* class TaskAdapter(context: Context) : ListAdapter(context) { @@ -40,7 +41,11 @@ class TaskAdapter(context: Context) : ListAdapter(context) { override fun areItemsTheSame(oldItem: TaskItemData?, newItem: TaskItemData?): Boolean { return when { oldItem?.noviceTasks != null && newItem?.noviceTasks != null -> { - oldItem.noviceTasks?.size == newItem.noviceTasks?.size + var oldIds = "" + var newIds = "" + oldItem.noviceTasks?.forEach { oldIds += it.taskId } + newItem.noviceTasks?.forEach { newIds += it.taskId } + oldIds == newIds } oldItem?.title != null && newItem?.title != null -> true @@ -69,6 +74,17 @@ class TaskAdapter(context: Context) : ListAdapter(context) { } } + override fun loadChange(status: LoadStatus?) { + if (status == LoadStatus.INIT) { + mIsNetworkError = false + mIsOver = false + mIsLoading = true + return + } else { + super.loadChange(status) + } + } + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val view: View return when (viewType) { @@ -85,7 +101,6 @@ class TaskAdapter(context: Context) : ListAdapter(context) { } } - override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { when (holder) { is NoviceTasksViewHolder -> { diff --git a/app/src/main/java/com/gh/gamecenter/energy/TaskFragment.kt b/app/src/main/java/com/gh/gamecenter/energy/TaskFragment.kt index 9ccba731b2..dc4d07c91c 100644 --- a/app/src/main/java/com/gh/gamecenter/energy/TaskFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/energy/TaskFragment.kt @@ -3,6 +3,7 @@ package com.gh.gamecenter.energy import android.os.Bundle import com.gh.common.util.viewModelProvider import com.gh.gamecenter.baselist.ListFragment +import com.gh.gamecenter.baselist.LoadType class TaskFragment: ListFragment() { @@ -25,6 +26,10 @@ class TaskFragment: ListFragment() { mListRefresh?.isEnabled = false } + override fun onLoadRefresh() { + mListViewModel.load(LoadType.REFRESH) + } + fun setNestedScrollingEnabled(enable: Boolean) { mListRv.isNestedScrollingEnabled = enable } 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 ca5dd171ec..42154a6062 100644 --- a/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/gamedetail/GameDetailFragment.kt @@ -519,7 +519,7 @@ class GameDetailFragment : NormalFragment() { } mUserViewModel.loginObsUserinfo.observe(this, Observer { - if (it != null) { + if (it != null && mGameEntity != null) { postDelayedRunnable({ controlReserveBtn() DetailDownloadUtils.detailInitDownload(detailViewHolder, false) diff --git a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.java b/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.java index 04e8e1a1ad..22e0e5ff1d 100644 --- a/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.java +++ b/app/src/main/java/com/gh/gamecenter/personal/NewPersonalFragment.java @@ -165,6 +165,7 @@ public class NewPersonalFragment extends BaseLazyFragment { private NewPersonalFunctionGroupAdapter mPersonalFuncGroupAdapter; private boolean mIsLogging = false; + private int mEnergy = 0; @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { @@ -376,6 +377,7 @@ public class NewPersonalFragment extends BaseLazyFragment { }); mUserHomeViewModel.getEnergy().observe(this, energy -> { + mEnergy = energy; if (energy > 9999) { mPersonalEnergy.setText("9999+"); } else { @@ -573,7 +575,7 @@ public class NewPersonalFragment extends BaseLazyFragment { case R.id.personal_energy: if (mUserInfoEntity != null) { MtaHelper.onEvent("我的光环_新", "光能值", "点击光能值"); - DialogUtils.showEnergyDialog(requireContext(), mUserInfoEntity.getName(), mPersonalEnergy.getText().toString()); + DialogUtils.showEnergyDialog(requireContext(), mUserInfoEntity.getName(), mEnergy); } else { CheckLoginUtils.checkLogin(getContext(), "我的光环-光能值", null); } diff --git a/app/src/main/java/com/gh/gamecenter/receiver/InstallAndUninstallReceiver.java b/app/src/main/java/com/gh/gamecenter/receiver/InstallAndUninstallReceiver.java index d44b15daf1..71b0ca933d 100644 --- a/app/src/main/java/com/gh/gamecenter/receiver/InstallAndUninstallReceiver.java +++ b/app/src/main/java/com/gh/gamecenter/receiver/InstallAndUninstallReceiver.java @@ -42,10 +42,10 @@ public class InstallAndUninstallReceiver extends BroadcastReceiver { if (PackageUtils.isAppOnForeground(context)) { PackageObserver.onPackageChanged(installEb); } else { - // 处于后台运行的时候尝试延迟 1 秒再触发 onPackageChanged (猜测是引起 ANR 的原因) + // 处于后台运行的时候尝试延迟 100 ms 再触发 onPackageChanged (猜测是引起 ANR 的原因) AppExecutor.getUiExecutor().executeWithDelay(() -> { PackageObserver.onPackageChanged(installEb); - }, 1000); + }, 100); } } diff --git a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt index 23aa5da7f5..8fef5207c7 100644 --- a/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/search/SearchGameIndexAdapter.kt @@ -47,6 +47,7 @@ class SearchGameIndexAdapter(context: Context, exposureEventArray = SparseArray(updateData?.size ?: 0) // 记录游戏位置 if (updateData != null) { + positionAndPackageMap.clear() for (i in 0 until updateData.size) { val gameEntity = updateData[i] var packages = gameEntity.id diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameFragment.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameFragment.kt index cf6fc07687..e4200cfd31 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameFragment.kt @@ -31,8 +31,8 @@ class SimulatorGameFragment : NormalFragment() { private val mAdTv by bindView(R.id.tv_ad) private lateinit var mViewModel: SimulatorGameViewModel - private var mFragmentsList = ArrayList() private var mTypeAliasList = ArrayList() + private var mFragmentsList = ArrayList() private var mCurrentPage = 0 override fun getLayoutId() = R.layout.fragment_simulator_game @@ -65,6 +65,7 @@ class SimulatorGameFragment : NormalFragment() { super.onViewCreated(view, savedInstanceState) mViewModel.simulators.observe(viewLifecycleOwner, Observer { list -> + mCurrentPage = 0 mTypeAliasList.clear() mFragmentsList.clear() if (list.isEmpty()) { @@ -120,8 +121,8 @@ class SimulatorGameFragment : NormalFragment() { } doOnPageSelected { MtaHelper.onEvent("我的光环_新", "模拟器游戏", "点击${mTypeAliasList[it]}") - - if (mCurrentPage != it) { + // mCurrentPage < mFragmentsList.size 是为了防止数组越界 + if (mCurrentPage != it && mCurrentPage < mFragmentsList.size) { (mFragmentsList.safelyGetInRelease(mCurrentPage) as? SimulatorGameListFragment)?.resetPage() mCurrentPage = it } diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListAdapter.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListAdapter.kt index 0bca89c5fe..096bbcaf6d 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListAdapter.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListAdapter.kt @@ -32,7 +32,9 @@ import com.gh.gamecenter.databinding.SimulatorGameItemBinding import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SimulatorEntity -class SimulatorGameListAdapter(context: Context, var simulator: SimulatorEntity, var fragment: SimulatorGameListFragment) : ListAdapter(context) { +class SimulatorGameListAdapter(context: Context, + var simulator: SimulatorEntity, + var fragment: SimulatorGameListFragment) : ListAdapter(context) { private var mCurrentOption = OPTION_MANAGER private var mShowSelectFlag = false @@ -110,8 +112,8 @@ class SimulatorGameListAdapter(context: Context, var simulator: SimulatorEntity, val shouldShowUpdate = Version(simulator.apk?.version).isHigherThan(versionFromInstalledApp) text = if (shouldShowUpdate) "更新模拟器" else "模拟器已安装" setTextColor(if (shouldShowUpdate) R.color.theme.toColor() else R.color.text_999999.toColor()) - if (shouldShowUpdate) { - setOnClickListener { + setOnClickListener { + if (shouldShowUpdate) { SimulatorDownloadManager.getInstance().showDownloadDialog(context, simulator, SimulatorDownloadManager.SimulatorLocation.SIMULATOR_GAME) MtaHelper.onEvent("我的光环_新", "模拟器游戏", "点击${simulator.typeAlias}+更新模拟器") } @@ -132,7 +134,6 @@ class SimulatorGameListAdapter(context: Context, var simulator: SimulatorEntity, is SimulatorGameViewHolder -> { val gameEntity = mEntityList[position - 1] holder.binding.run { - gameItemIncluded.game = gameEntity (gameItemIncluded.downloadBtn.layoutParams as LinearLayout.LayoutParams).apply { gravity = Gravity.BOTTOM bottomMargin = DisplayUtils.dip2px(4F) @@ -140,6 +141,7 @@ class SimulatorGameListAdapter(context: Context, var simulator: SimulatorEntity, (gameItemIncluded.gameName.layoutParams as LinearLayout.LayoutParams).apply { width = LinearLayout.LayoutParams.WRAP_CONTENT } + gameItemIncluded.game = gameEntity gameItemIncluded.recentPlayedTag.goneIf(!gameEntity.isRecentlyPlayed) gameItemIncluded.selectIv.goneIf(!mShowSelectFlag) gameItemIncluded.selectIv.isChecked = mSelectList[position - 1] @@ -181,7 +183,14 @@ class SimulatorGameListAdapter(context: Context, var simulator: SimulatorEntity, } } }) - DownloadItemUtils.updateItem(mContext, gameEntity, GameViewHolder(holder.binding.gameItemIncluded), true) + + DownloadItemUtils.updateItem( + mContext, + gameEntity, + GameViewHolder(holder.binding.gameItemIncluded), + true + ) + optionsIv.setOnClickListener { showSingleOptionWindow(optionsIv, gameEntity, gameItemIncluded.downloadBtn.text == mContext.getString(R.string.launch)) diff --git a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListFragment.kt b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListFragment.kt index 0b554a02c0..6a3e8aca8d 100644 --- a/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/simulatorgame/SimulatorGameListFragment.kt @@ -6,6 +6,7 @@ import com.gh.common.util.safelyGetInRelease import com.gh.common.util.viewModelProvider import com.gh.download.DownloadManager import com.gh.gamecenter.baselist.ListFragment +import com.gh.gamecenter.baselist.LoadType import com.gh.gamecenter.entity.GameEntity import com.gh.gamecenter.entity.SimulatorEntity import com.gh.gamecenter.eventbus.EBPackage @@ -21,6 +22,7 @@ class SimulatorGameListFragment : ListFragment { if (isChecked) { if (UsageStatsHelper.checkForPermission()) { sp.edit().putBoolean(UsageStatsHelper.USAGE_STATUS_SP_KEY, true).apply(); + EnergyTaskHelper.postEnergyTask("open_game_time"); } else { DialogUtils.showUsageStatsDialog(getContext(), () -> { diff --git a/app/src/main/java/com/halo/assistant/fragment/WebFragment.java b/app/src/main/java/com/halo/assistant/fragment/WebFragment.java index 64518bb6fd..71469920c5 100644 --- a/app/src/main/java/com/halo/assistant/fragment/WebFragment.java +++ b/app/src/main/java/com/halo/assistant/fragment/WebFragment.java @@ -17,6 +17,7 @@ import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.Nullable; +import androidx.coordinatorlayout.widget.CoordinatorLayout; import com.gh.base.BaseActivity; import com.gh.common.AppExecutor; @@ -91,6 +92,8 @@ public class WebFragment extends NormalFragment implements IScrollable { RelativeLayout newsBottom; @BindView(R.id.closeBtn) RelativeLayout closeBtn; + @BindView(R.id.do_not_delete_this_empty_layout) + CoordinatorLayout emptyLayout; MenuItem mMenuShare; MenuItem mMenuCollect; @@ -248,6 +251,10 @@ public class WebFragment extends NormalFragment implements IScrollable { super.onCreate(savedInstanceState); setHasOptionsMenu(true); + if (getActivity() != null && getActivity() instanceof WebActivity) { + emptyLayout.setVisibility(View.GONE); + } + Bundle args = getArguments(); String webUrl = null; diff --git a/app/src/main/res/drawable-nodpi/splash_01.webp b/app/src/main/res/drawable-nodpi/splash_01.webp index 7d3fbddc20..3107bfee0e 100644 Binary files a/app/src/main/res/drawable-nodpi/splash_01.webp and b/app/src/main/res/drawable-nodpi/splash_01.webp differ