From 06826d3674ae04017ad4f345eecedab8d4d48e77 Mon Sep 17 00:00:00 2001 From: "Dr. Sergey Pogodin" Date: Sat, 20 Jan 2024 17:47:00 +0100 Subject: [PATCH 1/2] [#506] Potentially improves mediation performance --- ...iveGoogleMobileAdsBannerAdViewManager.java | 23 ++++++++----------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java b/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java index 037f89d4..370cce3a 100644 --- a/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java +++ b/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java @@ -182,19 +182,16 @@ private BaseAdView initAdView(ReactNativeAdView reactViewGroup) { oldAdView.destroy(); reactViewGroup.removeView(oldAdView); } - BaseAdView adView; - if (ReactNativeGoogleMobileAdsCommon.isAdManagerUnit(reactViewGroup.getUnitId())) { - Activity currentActivity = ((ReactContext) reactViewGroup.getContext()).getCurrentActivity(); - if (currentActivity != null) { - // in order to display the debug menu for GAM ads we need the activity context - // https://github.com/invertase/react-native-google-mobile-ads/issues/188 - adView = new AdManagerAdView(currentActivity); - } else { - return null; - } - } else { - adView = new AdView(reactViewGroup.getContext()); - } + + // For optimal mediation performance ad objects should be initialized with + // activity, rather than just context: + // https://developers.google.com/admob/android/mediation#initialize_your_ad_object_with_an_activity_instance + Activity currentActivity = ((ReactContext) reactViewGroup.getContext()).getCurrentActivity(); + if (currentActivity == null) return null; + + BaseAdView adView = ReactNativeGoogleMobileAdsCommon.isAdManagerUnit(reactViewGroup.getUnitId()) + ? new AdManagerAdView(currentActivity) : new AdView(currentActivity); + adView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); adView.setOnPaidEventListener( new OnPaidEventListener() { From d8fa6314a4d68260610a49b98b66ef480a679b23 Mon Sep 17 00:00:00 2001 From: "Dr. Sergey Pogodin" Date: Sat, 20 Jan 2024 17:59:41 +0100 Subject: [PATCH 2/2] Code style correction to keep linter happy --- .../ReactNativeGoogleMobileAdsBannerAdViewManager.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java b/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java index 370cce3a..c971b073 100644 --- a/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java +++ b/android/src/main/java/io/invertase/googlemobileads/ReactNativeGoogleMobileAdsBannerAdViewManager.java @@ -189,8 +189,10 @@ private BaseAdView initAdView(ReactNativeAdView reactViewGroup) { Activity currentActivity = ((ReactContext) reactViewGroup.getContext()).getCurrentActivity(); if (currentActivity == null) return null; - BaseAdView adView = ReactNativeGoogleMobileAdsCommon.isAdManagerUnit(reactViewGroup.getUnitId()) - ? new AdManagerAdView(currentActivity) : new AdView(currentActivity); + BaseAdView adView = + ReactNativeGoogleMobileAdsCommon.isAdManagerUnit(reactViewGroup.getUnitId()) + ? new AdManagerAdView(currentActivity) + : new AdView(currentActivity); adView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS); adView.setOnPaidEventListener(