diff --git a/app/src/main/java/com/gh/ad/AdDelegateHelper.kt b/app/src/main/java/com/gh/ad/AdDelegateHelper.kt index 6e55aa6755..8f28402071 100644 --- a/app/src/main/java/com/gh/ad/AdDelegateHelper.kt +++ b/app/src/main/java/com/gh/ad/AdDelegateHelper.kt @@ -593,12 +593,11 @@ object AdDelegateHelper { ) adImage.visibleIf(true) - ImageUtils.display(adImage, ad.img) + ImageUtils.displayWithoutMemoryCache(adImage, ad.img) if (ad.isImageType) { adVideo.visibleIf(false) } else { - adVideo.visibleIf(true) adVideo.startPlay(ad.video.url) } startAdContainer.setOnClickListener { diff --git a/app/src/main/java/com/gh/ad/SplashAdVideoView.kt b/app/src/main/java/com/gh/ad/SplashAdVideoView.kt index 3a9c430178..1b1bb35bfe 100644 --- a/app/src/main/java/com/gh/ad/SplashAdVideoView.kt +++ b/app/src/main/java/com/gh/ad/SplashAdVideoView.kt @@ -44,6 +44,16 @@ class SplashAdVideoView @JvmOverloads constructor( return R.layout.layout_splash_ad_video } + override fun touchSurfaceMoveFullLogic(absDeltaX: Float, absDeltaY: Float) { + // no nothing + } + + override fun onPrepared() { + super.onPrepared() + + visibility = VISIBLE + } + override fun onAutoCompletion() { setStateAndUi(CURRENT_STATE_AUTO_COMPLETE); diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index 50560def57..7169b8e9b2 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -166,8 +166,13 @@ public class MainActivity extends BaseActivity { private final Handler handler = new Handler(); private boolean mShouldShowAd = false; // 是否显示广告 + private Bundle mTempSavedInstanceState; + private boolean mFragmentIsCreated = false; + @Override protected void onCreate(Bundle savedInstanceState) { + mTempSavedInstanceState = savedInstanceState; + mShouldShowAd = getIntent().getBooleanExtra(SHOW_AD, false) && savedInstanceState == null && !HaloApp.getInstance().isAlreadyUpAndRunning; HaloApp.getInstance().isAlreadyUpAndRunning = true; @@ -175,21 +180,12 @@ public class MainActivity extends BaseActivity { mMainWrapperViewModel = new ViewModelProvider(this, new MainWrapperViewModel.Factory(HaloApp.getInstance())) .get(MainWrapperViewModel.class); + DisplayUtils.transparentStatusBar(this); DisplayUtils.updateGlobalScreen(this); super.onCreate(savedInstanceState); setStatusBarColor(Color.TRANSPARENT); - Fragment fragmentFromFM = getSupportFragmentManager().findFragmentById(com.gh.gamecenter.selector.R.id.layout_activity_content); - - mMainWrapperFragment = fragmentFromFM != null ? (MainWrapperFragment) fragmentFromFM : new MainWrapperFragment(); - if (savedInstanceState != null) { - mMainWrapperFragment.setArguments(savedInstanceState); - } else if (getIntent() != null) { - mMainWrapperFragment.setArguments(getIntent().getExtras()); - } - replaceFragment(mMainWrapperFragment); - SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this); if (HaloApp.getInstance().isNewForThisVersion) { LunchType lunchType = HaloApp.getInstance().getLaunchType(); @@ -215,7 +211,6 @@ public class MainActivity extends BaseActivity { DataUtils.getGid(); } - mPackageViewModel = ViewModelProviders.of(this, new PackageViewModel.Factory()).get(PackageViewModel.class); final boolean containsErrorMsg = com.gh.gamecenter.common.constant.Config.isContainsErrorMsg(); @@ -273,6 +268,7 @@ public class MainActivity extends BaseActivity { if (mShouldShowAd) { showAd(); } else { + doInitMainFragment(mTempSavedInstanceState); hideTextAd(); hideSplashAd(); } @@ -328,6 +324,23 @@ public class MainActivity extends BaseActivity { CertificationSwitchHelper.getCertificationSwitch(); } + private void doInitMainFragment(Bundle savedInstanceState) { + if (mFragmentIsCreated) return; + + mTempSavedInstanceState = null; + Fragment fragmentFromFM = getSupportFragmentManager().findFragmentById(com.gh.gamecenter.selector.R.id.layout_activity_content); + + mMainWrapperFragment = fragmentFromFM != null ? (MainWrapperFragment) fragmentFromFM : new MainWrapperFragment(); + if (savedInstanceState != null) { + mMainWrapperFragment.setArguments(savedInstanceState); + } else if (getIntent() != null) { + mMainWrapperFragment.setArguments(getIntent().getExtras()); + } + replaceFragment(mMainWrapperFragment); + + mFragmentIsCreated = true; + } + @SuppressLint("CheckResult") private void getTeenagerMode() { RetrofitManager.getInstance() @@ -541,13 +554,21 @@ public class MainActivity extends BaseActivity { protected void handleMessage(Message msg) { super.handleMessage(msg); if (msg.what == COUNTDOWN_AD || msg.what == COUNTDOWN_SDK_AD) { - mCountdownCount++; int maxCount; + if (msg.what == COUNTDOWN_AD) { maxCount = mCountdownMaxCount; } else { maxCount = COUNTDOWN_SDK_MAX_COUNT; } + + // 读秒到一半的时候初始化 MainWrapperFragment + if (mCountdownCount == maxCount / 2) { + doInitMainFragment(mTempSavedInstanceState); + } + + mCountdownCount++; + if (maxCount < mCountdownCount) { AdDelegateHelper.INSTANCE.setShowingSplashAd(false); hideSplashAd(); @@ -633,10 +654,11 @@ public class MainActivity extends BaseActivity { ExtensionsKt.removeFromParent(startSdkAdIcpContainer, true); } - onSplashHidden(); + onAdHidden(); } - private void onSplashHidden() { + private void onAdHidden() { + doInitMainFragment(mTempSavedInstanceState); // 通知全局弹窗可以进行显示 AppExecutor.getUiExecutor().execute(GlobalPriorityChainHelper.INSTANCE::start); } @@ -854,7 +876,9 @@ public class MainActivity extends BaseActivity { @Override public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 && !mMainWrapperFragment.onHandleBackPressed()) { + if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0 + && mMainWrapperFragment != null + && !mMainWrapperFragment.onHandleBackPressed()) { DownloadEntity downloadEntity = null; for (DownloadEntity entity : DownloadManager.getInstance().getAllDownloadEntityExcludeSilentTask()) { if (entity.getStatus().equals(DownloadStatus.done)) { diff --git a/app/src/main/java/com/gh/gamecenter/wrapper/MainWrapperFragment.kt b/app/src/main/java/com/gh/gamecenter/wrapper/MainWrapperFragment.kt index 767c5e78b1..7db9e2ab24 100644 --- a/app/src/main/java/com/gh/gamecenter/wrapper/MainWrapperFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/wrapper/MainWrapperFragment.kt @@ -65,7 +65,6 @@ class MainWrapperFragment : BaseBottomTabFragment(), OnBa override fun onCreate(savedInstanceState: Bundle?) { mViewModel = viewModelProviderFromParent(MainWrapperViewModel.Factory(HaloApp.getInstance())) super.onCreate(savedInstanceState) - DisplayUtils.transparentStatusBar(requireActivity()) initSkeleton() diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index e221931e72..6c9a25e45c 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,11 +1,11 @@ - - @@ -97,4 +97,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/piece_start_ad_container.xml b/app/src/main/res/layout/piece_start_ad_container.xml index bf7eebe283..123a0b0ee9 100644 --- a/app/src/main/res/layout/piece_start_ad_container.xml +++ b/app/src/main/res/layout/piece_start_ad_container.xml @@ -5,7 +5,7 @@ android:id="@+id/startAdContainer" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@color/ui_background" + android:background="@color/white" android:visibility="gone" tools:visibility="visible"> @@ -13,7 +13,6 @@ android:id="@+id/adImage" android:layout_width="0dp" android:layout_height="0dp" - android:tint="#01000000" android:visibility="gone" app:actualImageScaleType="centerCrop" app:fadeDuration="0" @@ -26,6 +25,7 @@ android:id="@+id/ad_video" android:layout_width="0dp" android:layout_height="0dp" + android:visibility="gone" app:layout_constraintBottom_toTopOf="@id/startAdIcpContainer" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" diff --git a/module_core/src/main/java/com/gh/gamecenter/core/AppExecutor.kt b/module_core/src/main/java/com/gh/gamecenter/core/AppExecutor.kt index 56c0ea1385..5071e1d0b2 100644 --- a/module_core/src/main/java/com/gh/gamecenter/core/AppExecutor.kt +++ b/module_core/src/main/java/com/gh/gamecenter/core/AppExecutor.kt @@ -21,7 +21,7 @@ import java.util.concurrent.* */ object AppExecutor { - private const val CORE_POOL_SIZE = 3 + private const val CORE_POOL_SIZE = 6 private const val MAX_POOL_SIZE = 32 @JvmStatic