diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 47a1f41388..f81ca2b2c5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -165,7 +165,8 @@ android:screenOrientation="portrait" /> + android:name="com.gh.gamecenter.WebActivity" + android:screenOrientation="portrait"/> Unit)? = null + var mCallBack: ((isFromPermissionGrantedCallback: Boolean) -> Unit)? = null override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { mView = inflater.inflate(R.layout.dialog_install_permission, null, false) @@ -59,7 +60,7 @@ class InstallPermissionDialogFragment : BaseDialogFragment() { closeTv.setOnClickListener { if (isXapk) { - mCallBack?.invoke() + mCallBack?.invoke(false) } dismiss() } @@ -78,36 +79,38 @@ class InstallPermissionDialogFragment : BaseDialogFragment() { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (resultCode == RESULT_OK && requestCode == INSTALL_PERMISSION_CODE) { - SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, "") - SPUtils.setString(Constants.SP_XAPK_URL, "") - mCallBack?.invoke() + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { + SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, "") + SPUtils.setString(Constants.SP_XAPK_URL, "") + } + mCallBack?.invoke(true) dismiss() } } companion object { @JvmStatic - fun show(activity: AppCompatActivity, downloadEntity: DownloadEntity, callBack: (() -> Unit)?) { + fun show(activity: AppCompatActivity, downloadEntity: DownloadEntity, callBack: ((isFromPermissionGrantedCallback: Boolean) -> Unit)?) { val isXapk = XapkInstaller.XAPK_EXTENSION_NAME == downloadEntity.path.getExtension() if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { - callBack?.invoke() + callBack?.invoke(false) return } val haveInstallPermission = activity.packageManager.canRequestPackageInstalls() if (haveInstallPermission) { - callBack?.invoke() + callBack?.invoke(false) return } if (isXapk) { val xapkUnzipVersions = Config.getSettings()?.permissionPopupAppliedVersions?.xapkUnzip if (xapkUnzipVersions?.contains(Build.VERSION.SDK_INT.toString()) == false) { - callBack?.invoke() + callBack?.invoke(false) return } } else { val installVersions = Config.getSettings()?.permissionPopupAppliedVersions?.install if (installVersions?.contains(Build.VERSION.SDK_INT.toString()) == false) { - callBack?.invoke() + callBack?.invoke(false) return } } diff --git a/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt b/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt index 1e380c5700..7c5bd38bab 100644 --- a/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt +++ b/app/src/main/java/com/gh/common/simulator/SimulatorDownloadManager.kt @@ -94,6 +94,9 @@ class SimulatorDownloadManager private constructor() { DownloadStatus.unqualified == downloadEntity.status -> { ToastUtils.showToast("未成年人暂不允许在此时间下载游戏") } + DownloadStatus.unavailable == downloadEntity.status -> { + ToastUtils.showToast("该游戏未接入防沉迷系统,暂不支持下载") + } DownloadStatus.hijack == downloadEntity.status -> { ToastUtils.showToast("网络劫持,请稍后重试") } 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 55b946f3c5..dd1d3586dd 100644 --- a/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java +++ b/app/src/main/java/com/gh/common/util/DetailDownloadUtils.java @@ -201,6 +201,7 @@ public class DetailDownloadUtils { case notfound: case uncertificated: case unqualified: + case unavailable: detailInitDownload(viewHolder, false); break; default: diff --git a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt index 4c7570a817..af208da26f 100644 --- a/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt +++ b/app/src/main/java/com/gh/common/util/DownloadNotificationHelper.kt @@ -118,6 +118,7 @@ object DownloadNotificationHelper { || entity.status == DownloadStatus.cancel || entity.status == DownloadStatus.hijack || entity.status == DownloadStatus.unqualified + || entity.status == DownloadStatus.unavailable || entity.status == DownloadStatus.uncertificated || entity.status == DownloadStatus.notfound || entity.status == DownloadStatus.overflow diff --git a/app/src/main/java/com/gh/common/util/DownloadObserver.kt b/app/src/main/java/com/gh/common/util/DownloadObserver.kt index fb4d1d7858..c782508b4a 100644 --- a/app/src/main/java/com/gh/common/util/DownloadObserver.kt +++ b/app/src/main/java/com/gh/common/util/DownloadObserver.kt @@ -39,7 +39,6 @@ import okhttp3.MediaType import okhttp3.RequestBody import org.greenrobot.eventbus.EventBus import org.json.JSONObject -import java.util.* object DownloadObserver { @@ -112,6 +111,20 @@ object DownloadObserver { // 未成年 RealNameHelper.showRealNameUnqualifiedDialog(downloadEntity) + // 删除任务 + downloadEntity.status = DownloadStatus.cancel + downloadManager.cancel(downloadEntity.url) + } else if (DownloadStatus.unavailable == downloadEntity.status) { + // 未接入防沉迷系统 + val currentActivity = AppManager.getInstance().currentActivity() ?: return + + DialogHelper.showDialog( + context = currentActivity, + title = "温馨提示", + content = "该游戏未接入防沉迷系统,暂不支持下载", + confirmText = "知道了", + cancelText = "") + // 删除任务 downloadEntity.status = DownloadStatus.cancel downloadManager.cancel(downloadEntity.url) diff --git a/app/src/main/java/com/gh/common/util/PackageInstaller.kt b/app/src/main/java/com/gh/common/util/PackageInstaller.kt index aafbde2651..7e86761029 100644 --- a/app/src/main/java/com/gh/common/util/PackageInstaller.kt +++ b/app/src/main/java/com/gh/common/util/PackageInstaller.kt @@ -59,15 +59,23 @@ object PackageInstaller { // TODO 此处可能遇到 activity 是 WXEntryActivity // TODO 当 activity 全部出栈,但是应用还在下载游戏,下载完会唤不起安装! if (currentActivity is AppCompatActivity && !currentActivity.isFinishing) { - InstallPermissionDialogFragment.show(currentActivity, downloadEntity) { + InstallPermissionDialogFragment.show(currentActivity, downloadEntity) { isFromPermissionGrantedCallback -> // 取消状态栏下载完成的通知,若存在 downloadEntity.meta[Constants.MARK_ALREADY_TRIGGERED_INSTALLATION] = "YES" DownloadNotificationHelper.addOrUpdateDownloadNotification(downloadEntity) - if (isXapk) { - XapkInstaller.install(context, downloadEntity, showUnzipToast) + if (isFromPermissionGrantedCallback && Build.VERSION.SDK_INT >= 31) { + val pm = context.packageManager + val intent = pm.getLaunchIntentForPackage(context.packageName) + val mainIntent = Intent.makeRestartActivityTask(intent!!.component) + context.startActivity(mainIntent) + Runtime.getRuntime().exit(0) } else { - install(context, downloadEntity.isPlugin, downloadEntity.path) + if (isXapk) { + XapkInstaller.install(context, downloadEntity, showUnzipToast) + } else { + install(context, downloadEntity.isPlugin, downloadEntity.path) + } } } } diff --git a/app/src/main/java/com/gh/download/DownloadDataHelper.kt b/app/src/main/java/com/gh/download/DownloadDataHelper.kt index 60680d9d6a..4e1a6b2649 100644 --- a/app/src/main/java/com/gh/download/DownloadDataHelper.kt +++ b/app/src/main/java/com/gh/download/DownloadDataHelper.kt @@ -86,6 +86,8 @@ object DownloadDataHelper { "未实名" } else if (status == DownloadStatus.unqualified) { "未成年" + } else if (status == DownloadStatus.unavailable) { + "未接入防沉迷系统,暂不支持下载" } else if (status == DownloadStatus.redirected) { "重定向至最终地址" } else { diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index eb4aab2da7..e1870ff6e6 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -295,11 +295,6 @@ public class MainActivity extends BaseActivity { checkDialog(); } -// handler.postDelayed(() -> { -// PushHelper.postPushClickAction(this.getApplicationContext(), null); -// }, 2000); - - // 耗时操作 AppExecutor.getIoExecutor().execute(() -> { // 上传数据 @@ -312,9 +307,6 @@ public class MainActivity extends BaseActivity { // 初始化PlatformUtils PlatformUtils.getInstance(getApplicationContext()); -// // 友盟记录启动 -// PushAgent.getInstance(this).onAppStart(); - HomePluggableHelper.activationFilterData(); }); @@ -336,6 +328,9 @@ public class MainActivity extends BaseActivity { postAttentionVideoRecord(); deleteSimulatorGame(); + // 检查是否需要触发 XAPK 安装 + AppExecutor.getUiExecutor().executeWithDelay(this::resumeXapkInstallIfNeeded, 150); + QuickLoginHelper.getPhoneInfo(this); WechatBindHelper.getWechatConfig(null); initWBSDK(); @@ -1028,6 +1023,25 @@ public class MainActivity extends BaseActivity { } } + /** + * 重新触发 XAPK 安装流程 + * 因为 Android 12 起授予应用安装未知应用权限以后不触发进程重启,导致应用一直无法读写 android/data 目录 + * 所以这里再手动重启应用进程时再触发一回安装 + */ + private void resumeXapkInstallIfNeeded() { + if (Build.VERSION.SDK_INT > Build.VERSION_CODES.R) { + String xapkUrl = SPUtils.getString(Constants.SP_XAPK_URL); + if (!TextUtils.isEmpty(xapkUrl)) { + DownloadEntity downloadEntity = DownloadManager.getInstance().getDownloadEntityByUrl(xapkUrl); + if (downloadEntity != null) { + PackageInstaller.install(this, downloadEntity, false); + } + } + SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, ""); + SPUtils.setString(Constants.SP_XAPK_URL, ""); + } + } + @Override protected boolean isAutoResetViewBackgroundEnabled() { return true; diff --git a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java index deca48a1c3..2724c82f87 100644 --- a/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java +++ b/app/src/main/java/com/gh/gamecenter/SplashScreenActivity.java @@ -5,6 +5,7 @@ import android.annotation.SuppressLint; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; +import android.os.Build; import android.os.Bundle; import android.preference.PreferenceManager; import android.text.TextUtils; @@ -177,8 +178,10 @@ public class SplashScreenActivity extends BaseActivity { launchMainActivity(); } - SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, ""); - SPUtils.setString(Constants.SP_XAPK_URL, ""); + if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.R) { + SPUtils.setString(Constants.SP_XAPK_UNZIP_ACTIVITY, ""); + SPUtils.setString(Constants.SP_XAPK_URL, ""); + } } private void showPrivacyDialog(ViewPager guideLayout) { diff --git a/app/src/main/java/com/gh/gamecenter/WebActivity.kt b/app/src/main/java/com/gh/gamecenter/WebActivity.kt index d95ed883e0..bbe324695f 100644 --- a/app/src/main/java/com/gh/gamecenter/WebActivity.kt +++ b/app/src/main/java/com/gh/gamecenter/WebActivity.kt @@ -34,9 +34,6 @@ open class WebActivity : ToolBarActivity() { if (mIsFullScreen) { setTheme(R.style.AppFullScreenTheme) } - if (Build.VERSION.SDK_INT != Build.VERSION_CODES.O) { - requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT - } super.onCreate(savedInstanceState) if (mIsFullScreen) { hideToolbar(true) diff --git a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideListViewHolder.kt b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideListViewHolder.kt index 0f78c192cd..f73d856488 100644 --- a/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideListViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/game/horizontal/GameHorizontalSlideListViewHolder.kt @@ -39,7 +39,7 @@ class GameHorizontalSlideListViewHolder(val binding: GameHorizontalListBinding) binding.horizontalRv.setScrollingTouchSlop(RecyclerView.TOUCH_SLOP_PAGING) binding.horizontalRv.isNestedScrollingEnabled = false - if (subjectEntity.data?.first()?.test?.testTime != null && mLastScrolledPosition == 0) { + if (subjectEntity.data?.firstOrNull()?.test?.testTime != null && mLastScrolledPosition == 0) { scrollToSpecificItemForTheFirstTime(subjectEntity) } } else { @@ -49,7 +49,7 @@ class GameHorizontalSlideListViewHolder(val binding: GameHorizontalListBinding) if (mLastScrolledPosition != adapterPosition) { val offset = offsetable.getOffset(adapterPosition) if (offset == 0) { - if (subjectEntity.data?.first()?.test?.testTime != null && mLastScrolledPosition == 0) { + if (subjectEntity.data?.firstOrNull()?.test?.testTime != null && mLastScrolledPosition == 0) { scrollToSpecificItemForTheFirstTime(subjectEntity) } else { binding.horizontalRv.scrollToPosition(0) diff --git a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayViewHolder.kt b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayViewHolder.kt index bb603356fb..f581aed995 100644 --- a/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayViewHolder.kt +++ b/app/src/main/java/com/gh/gamecenter/gamecollection/square/GameCollectionAmwayViewHolder.kt @@ -3,6 +3,9 @@ package com.gh.gamecenter.gamecollection.square import android.animation.Animator import android.animation.TimeInterpolator import android.animation.ValueAnimator +import android.os.Handler +import android.os.Looper +import android.os.Message import android.view.animation.AccelerateDecelerateInterpolator import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 @@ -13,20 +16,10 @@ import com.gh.gamecenter.entity.AmwayCommentEntity import java.lang.ref.WeakReference class GameCollectionAmwayViewHolder(var binding: GameCollectionSquareAmwayItemBinding) : RecyclerView.ViewHolder(binding.root) { - val mAdapter = GameCollectionAmwayAdapter(binding.root.context) - private val mLoopTask = object : Runnable { - private val reference: WeakReference = WeakReference(binding.amwayVp) - override fun run() { - val vp: ViewPager2? = reference.get() - if (vp != null) { - val count = mAdapter.itemCount - if (count == 0) return - val next = vp.currentItem + 1 - vp.setCurrentItem(next, 1000) - vp.postDelayed(this, AMWAY_LOOP_TIME) - } - } - } + + private val mAdapter = GameCollectionAmwayAdapter(binding.root.context) + private val mLooperHandle = LooperHandle(this) + private val mSlideLooperKey = 333 fun bindAmway(amwayList: List) { mAdapter.setAmwayList(amwayList) @@ -35,7 +28,7 @@ class GameCollectionAmwayViewHolder(var binding: GameCollectionSquareAmwayItemBi isUserInputEnabled = false adapter = mAdapter orientation = ViewPager2.ORIENTATION_VERTICAL - postDelayed(mLoopTask, AMWAY_LOOP_TIME) + startAutoPlay() } binding.root.setOnClickListener { NewLogUtils.logClickGameCollectionAmway() @@ -44,13 +37,20 @@ class GameCollectionAmwayViewHolder(var binding: GameCollectionSquareAmwayItemBi } } - fun start() { - stop() - binding.amwayVp.postDelayed(mLoopTask, AMWAY_LOOP_TIME) + private fun scrollToNextPage() { + if (mAdapter.getRealCount() == 0) return + val next = binding.amwayVp.currentItem + 1 + binding.amwayVp.setCurrentItem(next, 1000) } - fun stop() { - binding.amwayVp.removeCallbacks(mLoopTask) + private fun startAutoPlay() { + if (mAdapter.getRealCount() <= 1) return + stopAutoPlay() + mLooperHandle.sendEmptyMessageDelayed(mSlideLooperKey, AMWAY_LOOP_TIME) + } + + private fun stopAutoPlay() { + mLooperHandle.removeMessages(mSlideLooperKey) } fun ViewPager2.setCurrentItem( @@ -83,4 +83,18 @@ class GameCollectionAmwayViewHolder(var binding: GameCollectionSquareAmwayItemBi // 安利墙卡片轮播时间 const val AMWAY_LOOP_TIME = 5000L } + + class LooperHandle(viewHolder: GameCollectionAmwayViewHolder): Handler( + Looper.getMainLooper()) { + private val mWeakReference: WeakReference = WeakReference(viewHolder) + + override fun handleMessage(msg: Message) { + super.handleMessage(msg) + val viewHolder = mWeakReference.get() + if (viewHolder != null && msg.what == viewHolder.mSlideLooperKey) { + viewHolder.scrollToNextPage() + viewHolder.startAutoPlay() + } + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt b/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt index 2dab8bb5bf..7dd2d33016 100644 --- a/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/home/HomeFragment.kt @@ -329,11 +329,12 @@ class HomeFragment : LazyFragment() { override fun onNightModeChange() { super.onNightModeChange() - mBinding.gameList.setBackgroundColor(R.color.background_white.toColor(requireContext())) - mBinding.gameList.recycledViewPool.clear() - mListAdapter.notifyItemRangeChanged(0, mListAdapter.itemCount) - if (isSupportVisible) { - onScrollChanged() + if (::mBinding.isInitialized) { + mBinding.gameList.recycledViewPool.clear() + if (::mListAdapter.isInitialized) mListAdapter.notifyItemRangeChanged(0, mListAdapter.itemCount) + if (isSupportVisible) { + onScrollChanged() + } } } } \ No newline at end of file diff --git a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt index 56868304cc..55c8a42d6e 100644 --- a/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt +++ b/app/src/main/java/com/halo/assistant/fragment/SettingsFragment.kt @@ -1,13 +1,17 @@ package com.halo.assistant.fragment import android.annotation.SuppressLint +import android.app.Application import android.app.Dialog +import android.content.Context import android.content.Intent import android.graphics.Color import android.os.Build import android.os.Bundle import android.provider.Settings import android.view.View +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModelProvider import com.airbnb.lottie.LottieAnimationView import com.gh.common.constant.Config @@ -58,6 +62,8 @@ class SettingsFragment : ToolbarFragment() { private var loadingDialog: Dialog? = null private var mUsageStatus = false + private val mViewModel: SettingViewModel by lazy { viewModelProvider() } + override fun getLayoutId() = 0 override fun getInflatedLayout() = FragmentSettingBinding.inflate(layoutInflater).apply { mBinding = this }.root @@ -101,13 +107,12 @@ class SettingsFragment : ToolbarFragment() { //判断隐私政策是否有更新 mBinding.privacyPolicyItem.redDot.visibility = if (checkPrivacyIsSame()) View.GONE else View.VISIBLE - runOnIoThread { - val cacheSize = getCacheSize() - runOnUiThread { - mBinding.cacheItem.contentTv.text = cacheSize - } + mViewModel.cacheSizeLiveData.observe(this) { + mBinding.cacheItem.contentTv.text = it } + mViewModel.getCacheSize() + mBinding.personalRecommendItem.switchLottie.setSwitchAnimation(SPUtils.getBoolean(PERSONAL_RECOMMEND_SP_KEY, true)) checkSizeIndex = SPUtils.getInt(FONT_SIZE_SP_KEY, 1) @@ -442,7 +447,7 @@ class SettingsFragment : ToolbarFragment() { if (loadingDialog != null) { loadingDialog!!.dismiss() } - mBinding.cacheItem.contentTv.text = getCacheSize() + mViewModel.getCacheSize() Utils.toast(context, "缓存清除成功") } @@ -511,43 +516,50 @@ class SettingsFragment : ToolbarFragment() { return currentMd5 == privacyMd5 } - // 获取缓存大小 - private fun getCacheSize(): String { - val ecDir = requireContext().externalCacheDir - var cacheLength: Long = getFolderSize(requireContext().cacheDir) - if (ecDir != null) { - cacheLength += getFolderSize(ecDir) - } - return long2Size(cacheLength) - } + class SettingViewModel(application: Application): AndroidViewModel(application) { + val cacheSizeLiveData = MutableLiveData() - private fun getFolderSize(folder: File): Long { - var size: Long = 0 - //忽略视频缓存 - if (folder.name == "video-cache" || folder.name == "exo") return size - size += folder.length() - if (folder.isDirectory) { - val files = folder.listFiles() - if (files == null || files.isEmpty()) return size - for (file in files) { - size += if (file.isDirectory) { - getFolderSize(file) - } else { - file.length() + // 获取缓存大小 + fun getCacheSize() { + runOnIoThread { + val ecDir = getApplication().externalCacheDir + var cacheLength: Long = getFolderSize(getApplication().cacheDir) + if (ecDir != null) { + cacheLength += getFolderSize(ecDir) } + cacheSizeLiveData.postValue(long2Size(cacheLength)) } } - return size - } - private fun long2Size(length: Long): String { - val m = length / 1024f / 1024f - var str = m.toString() - val index = str.lastIndexOf(".") - if (index != -1 && str.length > index + 3) { - str = str.substring(0, index + 3) + private fun long2Size(length: Long): String { + val m = length / 1024f / 1024f + var str = m.toString() + val index = str.lastIndexOf(".") + if (index != -1 && str.length > index + 3) { + str = str.substring(0, index + 3) + } + return str + "M" } - return str + "M" + + private fun getFolderSize(folder: File): Long { + var size: Long = 0 + //忽略视频缓存 + if (folder.name == "video-cache" || folder.name == "exo") return size + size += folder.length() + if (folder.isDirectory) { + val files = folder.listFiles() + if (files == null || files.isEmpty()) return size + for (file in files) { + size += if (file.isDirectory) { + getFolderSize(file) + } else { + file.length() + } + } + } + return size + } + } override fun onNightModeChange() { diff --git a/app/src/main/res/values-v26/style.xml b/app/src/main/res/values-v26/style.xml new file mode 100644 index 0000000000..2ef10712de --- /dev/null +++ b/app/src/main/res/values-v26/style.xml @@ -0,0 +1,16 @@ + + + + \ No newline at end of file diff --git a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java index 0c3de56deb..b49d3ea310 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/base/activity/BaseActivity.java @@ -189,7 +189,9 @@ public abstract class BaseActivity extends BaseAppCompatActivity implements Easy super.onResume(); startPageTime = System.currentTimeMillis(); - if (!NightModeUtils.INSTANCE.getSystemMode() && mNightMode != NightModeUtils.INSTANCE.isNightMode(this)) { + if (BuildConfig.IS_NIGHT_MODE_ON + && !NightModeUtils.INSTANCE.getSystemMode() + && mNightMode != NightModeUtils.INSTANCE.isNightMode(this)) { onNightModeChange(); } } diff --git a/module_common/src/main/java/com/gh/gamecenter/common/base/fragment/BaseFragment.java b/module_common/src/main/java/com/gh/gamecenter/common/base/fragment/BaseFragment.java index e2d42e9939..0b7c65be1c 100644 --- a/module_common/src/main/java/com/gh/gamecenter/common/base/fragment/BaseFragment.java +++ b/module_common/src/main/java/com/gh/gamecenter/common/base/fragment/BaseFragment.java @@ -244,7 +244,9 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB isEverPause = false; startPageTime = System.currentTimeMillis(); - if (!NightModeUtils.INSTANCE.getSystemMode() && mNightMode != NightModeUtils.INSTANCE.isNightMode(requireContext())) { + if (BuildConfig.IS_NIGHT_MODE_ON + && !NightModeUtils.INSTANCE.getSystemMode() + && mNightMode != NightModeUtils.INSTANCE.isNightMode(requireContext())) { onNightModeChange(); } } @@ -332,7 +334,9 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB // 为 fragment 附加 bundle (setArgument()) public BaseFragment with(Bundle bundle) { - this.setArguments(bundle); + if (!isStateSaved()) { + this.setArguments(bundle); + } return this; } @@ -352,7 +356,9 @@ public abstract class BaseFragment extends Fragment implements OnRequestCallB @Override public void onConfigurationChanged(@NonNull Configuration newConfig) { super.onConfigurationChanged(newConfig); - onNightModeChange(); + if (BuildConfig.IS_NIGHT_MODE_ON) { + onNightModeChange(); + } } protected void onNightModeChange() {