Skip to content

Commit 8676672

Browse files
Merge pull request #163 from MihaiCristianCondrea/codex/add-adutils-for-ad-initialization-and-loading
Centralize Mobile Ads initialization with AdUtils
2 parents c8c38af + 4257f06 commit 8676672

File tree

42 files changed

+127
-159
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+127
-159
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.d4rk.androidtutorials.java.ads;
2+
3+
import android.content.Context;
4+
import android.view.View;
5+
6+
import com.d4rk.androidtutorials.java.ads.views.NativeAdBannerView;
7+
import com.google.android.gms.ads.AdRequest;
8+
import com.google.android.gms.ads.AdView;
9+
import com.google.android.gms.ads.MobileAds;
10+
11+
public final class AdUtils {
12+
private static boolean initialized = false;
13+
14+
private AdUtils() {
15+
// no-op
16+
}
17+
18+
public static synchronized void initialize(Context context) {
19+
if (!initialized) {
20+
MobileAds.initialize(context.getApplicationContext());
21+
initialized = true;
22+
}
23+
}
24+
25+
public static void loadBanner(View adView) {
26+
if (adView instanceof AdView view) {
27+
initialize(view.getContext());
28+
view.loadAd(new AdRequest.Builder().build());
29+
} else if (adView instanceof NativeAdBannerView nativeView) {
30+
initialize(nativeView.getContext());
31+
nativeView.loadAd();
32+
}
33+
}
34+
}

app/src/main/java/com/d4rk/androidtutorials/java/ads/managers/AppOpenAd.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import com.google.android.gms.ads.AdRequest;
1919
import com.google.android.gms.ads.FullScreenContentCallback;
2020
import com.google.android.gms.ads.LoadAdError;
21-
import com.google.android.gms.ads.MobileAds;
21+
import com.d4rk.androidtutorials.java.ads.AdUtils;
2222
import com.google.android.gms.ads.appopen.AppOpenAd.AppOpenAdLoadCallback;
2323

2424
import java.util.Date;
@@ -35,10 +35,7 @@ public class AppOpenAd extends Application implements ActivityLifecycleCallbacks
3535
public void onCreate() {
3636
super.onCreate();
3737
registerActivityLifecycleCallbacks(this);
38-
MobileAds.initialize(
39-
this,
40-
initializationStatus -> {
41-
});
38+
AdUtils.initialize(this);
4239
CookieManager.getInstance();
4340
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
4441
appOpenAdManager = new AppOpenAdManager(this);

app/src/main/java/com/d4rk/androidtutorials/java/data/repository/DefaultSupportRepository.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import com.android.billingclient.api.ProductDetails;
1313
import com.android.billingclient.api.QueryProductDetailsParams;
1414
import com.google.android.gms.ads.AdRequest;
15-
import com.google.android.gms.ads.MobileAds;
15+
import com.d4rk.androidtutorials.java.ads.AdUtils;
1616

1717
import java.util.ArrayList;
1818
import java.util.Collections;
@@ -150,7 +150,7 @@ public BillingFlowLauncher initiatePurchase(String productId) {
150150
* can be done here if needed for the support screen).
151151
*/
152152
public AdRequest initMobileAds() {
153-
MobileAds.initialize(context);
153+
AdUtils.initialize(context);
154154
return new AdRequest.Builder().build();
155155
}
156156

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/about/AboutFragment.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
import com.d4rk.androidtutorials.java.R;
1919
import com.d4rk.androidtutorials.java.databinding.FragmentAboutBinding;
2020
import com.d4rk.androidtutorials.java.utils.ConsentUtils;
21-
import com.google.android.gms.ads.AdRequest;
22-
import com.google.android.gms.ads.MobileAds;
21+
import com.d4rk.androidtutorials.java.ads.AdUtils;
2322

2423
import dagger.hilt.android.AndroidEntryPoint;
2524
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
@@ -42,9 +41,8 @@ public android.view.View onCreateView(@NonNull android.view.LayoutInflater infla
4241
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
4342

4443
if (ConsentUtils.canShowAds(requireContext())) {
45-
MobileAds.initialize(requireContext());
4644
binding.adView.setVisibility(android.view.View.VISIBLE);
47-
binding.adView.loadAd(new AdRequest.Builder().build());
45+
AdUtils.loadBanner(binding.adView);
4846
} else {
4947
binding.adView.setVisibility(android.view.View.GONE);
5048
}

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/AndroidStudioFragment.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
import com.d4rk.androidtutorials.java.databinding.ItemAndroidStudioLessonBinding;
3535
import com.google.android.gms.ads.AdListener;
3636
import com.google.android.gms.ads.LoadAdError;
37-
import com.google.android.gms.ads.MobileAds;
37+
import com.d4rk.androidtutorials.java.ads.AdUtils;
3838
import com.google.android.material.card.MaterialCardView;
3939
import com.google.android.material.textview.MaterialTextView;
4040
import com.google.android.material.shape.CornerFamily;
@@ -138,7 +138,7 @@ public void onDestroyView() {
138138

139139
private void ensureMobileAdsInitialized() {
140140
if (!mobileAdsInitialized) {
141-
MobileAds.initialize(requireContext());
141+
AdUtils.initialize(requireContext());
142142
mobileAdsInitialized = true;
143143
}
144144
}

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/history/AndroidHistory.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
import com.d4rk.androidtutorials.java.databinding.ActivityAndroidHistoryBinding;
66
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
77
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
8-
import com.google.android.gms.ads.AdRequest;
9-
import com.google.android.gms.ads.MobileAds;
8+
import com.d4rk.androidtutorials.java.ads.AdUtils;
109

1110
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
1211

@@ -16,12 +15,10 @@ protected void onCreate(Bundle savedInstanceState) {
1615
super.onCreate(savedInstanceState);
1716
ActivityAndroidHistoryBinding binding = ActivityAndroidHistoryBinding.inflate(getLayoutInflater());
1817
setContentView(binding.getRoot());
19-
MobileAds.initialize(this);
20-
2118
EdgeToEdgeDelegate.apply(this, binding.scrollView);
2219

23-
binding.adView.loadAd(new AdRequest.Builder().build());
24-
binding.adViewBottom.loadAd(new AdRequest.Builder().build());
20+
AdUtils.loadBanner(binding.adView);
21+
AdUtils.loadBanner(binding.adViewBottom);
2522
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
2623
}
2724
}

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/permissions/PermissionsTutorialActivity.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
import com.d4rk.androidtutorials.java.databinding.ActivityPermissionsTutorialBinding;
88
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
99
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
10-
import com.google.android.gms.ads.AdRequest;
11-
import com.google.android.gms.ads.MobileAds;
10+
import com.d4rk.androidtutorials.java.ads.AdUtils;
1211

1312
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
1413

@@ -18,12 +17,10 @@ protected void onCreate(Bundle savedInstanceState) {
1817
super.onCreate(savedInstanceState);
1918
com.d4rk.androidtutorials.java.databinding.ActivityPermissionsTutorialBinding binding = ActivityPermissionsTutorialBinding.inflate(getLayoutInflater());
2019
setContentView(binding.getRoot());
21-
MobileAds.initialize(this);
22-
2320
EdgeToEdgeDelegate.apply(this, binding.scrollView);
2421

25-
binding.adViewBottom.loadAd(new AdRequest.Builder().build());
26-
binding.adViewLarge.loadAd(new AdRequest.Builder().build());
22+
AdUtils.loadBanner(binding.adViewBottom);
23+
AdUtils.loadBanner(binding.adViewLarge);
2724
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
2825
binding.buttonMore.setOnClickListener(v -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://developer.android.com/guide/topics/permissions/overview"))));
2926
}

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/sdk/AndroidSDK.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212
import com.d4rk.androidtutorials.java.databinding.ActivityAndroidSdkBinding;
1313
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1414
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
15-
import com.google.android.gms.ads.AdRequest;
16-
import com.google.android.gms.ads.MobileAds;
15+
import com.d4rk.androidtutorials.java.ads.AdUtils;
1716

1817
import java.util.Arrays;
1918
import java.util.List;
@@ -65,13 +64,10 @@ public class AndroidSDK extends UpNavigationActivity {
6564
protected void onCreate(Bundle savedInstanceState) {
6665
super.onCreate(savedInstanceState);
6766
binding = ActivityAndroidSdkBinding.inflate(getLayoutInflater());
68-
setContentView(binding.getRoot());
67+
setContentView(binding.getRoot()); EdgeToEdgeDelegate.apply(this, binding.scrollView);
6968

70-
MobileAds.initialize(this);
71-
EdgeToEdgeDelegate.apply(this, binding.scrollView);
72-
73-
binding.adViewBottom.loadAd(new AdRequest.Builder().build());
74-
binding.adView.loadAd(new AdRequest.Builder().build());
69+
AdUtils.loadBanner(binding.adViewBottom);
70+
AdUtils.loadBanner(binding.adView);
7571
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
7672

7773
createDynamicTable();

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/ShortcutsActivity.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111
import com.d4rk.androidtutorials.java.databinding.ActivityShortcutsBinding;
1212
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
1313
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
14-
import com.google.android.gms.ads.AdRequest;
15-
import com.google.android.gms.ads.MobileAds;
14+
import com.d4rk.androidtutorials.java.ads.AdUtils;
1615

1716
public class ShortcutsActivity extends UpNavigationActivity {
1817
@Override
@@ -21,10 +20,7 @@ protected void onCreate(Bundle savedInstanceState) {
2120
ActivityShortcutsBinding binding = ActivityShortcutsBinding.inflate(getLayoutInflater());
2221
setContentView(binding.getRoot());
2322

24-
EdgeToEdgeDelegate.apply(this, binding.container);
25-
26-
MobileAds.initialize(this);
27-
binding.adViewBottom.loadAd(new AdRequest.Builder().build());
23+
EdgeToEdgeDelegate.apply(this, binding.container); AdUtils.loadBanner(binding.adViewBottom);
2824

2925
getSupportFragmentManager().beginTransaction().replace(R.id.frame_layout_shortcuts, new SettingsFragment()).commit();
3026
ActionBar supportActionBar = getSupportActionBar();

app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/android/lessons/basics/shortcuts/tabs/BuildShortcutsActivity.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,7 @@
55
import com.d4rk.androidtutorials.java.databinding.ActivityShortcutsBuildBinding;
66
import com.d4rk.androidtutorials.java.ui.components.navigation.UpNavigationActivity;
77
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
8-
import com.google.android.gms.ads.AdRequest;
9-
import com.google.android.gms.ads.MobileAds;
8+
import com.d4rk.androidtutorials.java.ads.AdUtils;
109

1110
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
1211

@@ -16,11 +15,9 @@ protected void onCreate(Bundle savedInstanceState) {
1615
super.onCreate(savedInstanceState);
1716
com.d4rk.androidtutorials.java.databinding.ActivityShortcutsBuildBinding binding = ActivityShortcutsBuildBinding.inflate(getLayoutInflater());
1817
setContentView(binding.getRoot());
19-
MobileAds.initialize(this);
20-
2118
EdgeToEdgeDelegate.apply(this, binding.scrollView);
2219

23-
binding.adView.loadAd(new AdRequest.Builder().build());
20+
AdUtils.loadBanner(binding.adView);
2421
new FastScrollerBuilder(binding.scrollView).useMd2Style().build();
2522
}
2623
}

0 commit comments

Comments
 (0)