diff --git a/app/src/internal/res/xml/network_security_config.xml b/app/src/internal/res/xml/network_security_config.xml index c87ab1208b..30884c7ca2 100644 --- a/app/src/internal/res/xml/network_security_config.xml +++ b/app/src/internal/res/xml/network_security_config.xml @@ -1,6 +1,6 @@ - + diff --git a/app/src/main/java/com/gh/gamecenter/MainActivity.java b/app/src/main/java/com/gh/gamecenter/MainActivity.java index a6d823eebe..7dbb1f5134 100644 --- a/app/src/main/java/com/gh/gamecenter/MainActivity.java +++ b/app/src/main/java/com/gh/gamecenter/MainActivity.java @@ -474,6 +474,8 @@ public class MainActivity extends BaseActivity { protected void onDestroy() { super.onDestroy(); + if (mStartUpAdProvider != null) mStartUpAdProvider.cancelStartUpAd(this); + handler.removeCallbacksAndMessages(null); releaseExoSourceCache(); } @@ -500,7 +502,6 @@ public class MainActivity extends BaseActivity { if (!showAd) { hideStartUp(); hideStartUpAd(); - hideSDKStartUpAd(); return; } final StartupAdEntity startUp = AdHelper.getStartUp(); @@ -612,16 +613,10 @@ public class MainActivity extends BaseActivity { startAdContainer.setVisibility(View.GONE); ExtensionsKt.removeFromParent(startAdContainer); } - checkDialog(); - } - - private void hideSDKStartUpAd() { - showAd = false; - getIntent().putExtra(SHOW_AD, false); - View startAdContainer = findViewById(R.id.sdkStartAdContainer); - if (startAdContainer != null) { - startAdContainer.setVisibility(View.GONE); - ExtensionsKt.removeFromParent(startAdContainer); + View startSdkAdContainer = findViewById(R.id.sdkStartAdContainer); + if (startSdkAdContainer != null) { + startSdkAdContainer.setVisibility(View.GONE); + ExtensionsKt.removeFromParent(startSdkAdContainer); if (mStartUpAdProvider != null) mStartUpAdProvider.cancelStartUpAd(this); } checkDialog(); @@ -687,7 +682,7 @@ public class MainActivity extends BaseActivity { FrameLayout adsFl = findViewById(R.id.adsFl); if (mStartUpAdProvider != null) { mStartUpAdProvider.initStartUpAd(startAdContainer, adsFl, showAd, () -> { - hideSDKStartUpAd(); + hideStartUpAd(); return null; }); } diff --git a/feature/beizi_startup_ad/src/main/java/com/gh/gamecenter/beiziad/BeiziAdHelper.kt b/feature/beizi_startup_ad/src/main/java/com/gh/gamecenter/beiziad/BeiziAdHelper.kt index 5bc2c50987..4354ef0434 100644 --- a/feature/beizi_startup_ad/src/main/java/com/gh/gamecenter/beiziad/BeiziAdHelper.kt +++ b/feature/beizi_startup_ad/src/main/java/com/gh/gamecenter/beiziad/BeiziAdHelper.kt @@ -1,5 +1,6 @@ package com.gh.gamecenter.beiziad +import android.annotation.SuppressLint import android.content.Context import android.view.View import android.widget.FrameLayout @@ -9,11 +10,9 @@ import com.beizi.fusion.BeiZis import com.beizi.fusion.SplashAd import com.bun.miitmdid.core.MdidSdkHelper import com.gh.gamecenter.common.constant.Constants -import com.gh.gamecenter.common.exposure.meta.MetaUtil import com.gh.gamecenter.core.utils.DisplayUtils import com.gh.gamecenter.core.utils.SPUtils import com.lightgame.utils.Utils -import java.lang.ref.WeakReference object BeiziAdHelper { @@ -22,7 +21,9 @@ object BeiziAdHelper { private const val START_UP_AD_TOTAL_TIME = 3000L private val mChannelList = listOf("GH_206", "GH_TEST3", "GH_LOST") - private var mSplashAd: WeakReference? = null + @SuppressLint("StaticFieldLeak") + // 显示完广告后即置空 mSplashAd 实例 + private var mSplashAd: SplashAd? = null fun initBeiziSDK(context: Context) { BeiZis.setSupportPersonalized(SPUtils.getBoolean(Constants.SP_PERSONAL_RECOMMEND, true)) @@ -41,10 +42,13 @@ object BeiziAdHelper { fun initBeiziStartUpAd(startAdContainer: View, adsFl: FrameLayout, showAd: Boolean, hideCallback: () -> Unit) { startAdContainer.visibility = View.VISIBLE - mSplashAd = WeakReference(SplashAd(startAdContainer.context, null, BEIZI_START_UP_AD_ID, object : AdListener { + mSplashAd = SplashAd(startAdContainer.context, null, BEIZI_START_UP_AD_ID, object : AdListener { override fun onAdLoaded() { - if (showAd) { - mSplashAd?.get()?.show(adsFl) + if (!showAd || mSplashAd == null) { + hideCallback() + mSplashAd = null + } else { + mSplashAd?.show(adsFl) } } @@ -54,10 +58,12 @@ object BeiziAdHelper { override fun onAdFailedToLoad(i: Int) { hideCallback() + mSplashAd = null } override fun onAdClosed() { hideCallback() + mSplashAd = null } override fun onAdTick(l: Long) { @@ -67,12 +73,12 @@ object BeiziAdHelper { override fun onAdClicked() { // do nothing } - }, START_UP_AD_TOTAL_TIME)) - mSplashAd?.get()?.loadAd(DisplayUtils.getScreenWidth(), DisplayUtils.getScreenHeight()) + }, START_UP_AD_TOTAL_TIME) + mSplashAd?.loadAd(DisplayUtils.getScreenWidth(), DisplayUtils.getScreenHeight()) } fun cancelBeiziStartUpAd(context: Context) { - mSplashAd?.get()?.cancel(context) + mSplashAd?.cancel(context) } fun shouldEnableSDK(channel: String) = mChannelList.contains(channel)