File tree Expand file tree Collapse file tree 5 files changed +70
-3
lines changed
app/src/main/java/com/d4rk/androidtutorials/java Expand file tree Collapse file tree 5 files changed +70
-3
lines changed Original file line number Diff line number Diff line change 55import android .app .Application .ActivityLifecycleCallbacks ;
66import android .content .Context ;
77import android .os .Bundle ;
8- import android .webkit .CookieManager ;
98
109import androidx .annotation .NonNull ;
1110import androidx .annotation .Nullable ;
@@ -35,8 +34,6 @@ public class AppOpenAd extends Application implements ActivityLifecycleCallbacks
3534 public void onCreate () {
3635 super .onCreate ();
3736 registerActivityLifecycleCallbacks (this );
38- AdUtils .initialize (this );
39- CookieManager .getInstance ();
4037 ProcessLifecycleOwner .get ().getLifecycle ().addObserver (this );
4138 appOpenAdManager = new AppOpenAdManager (this );
4239 }
@@ -98,6 +95,7 @@ public AppOpenAdManager(Application application) {
9895 }
9996
10097 private void loadAd (Context context ) {
98+ AdUtils .initialize (context );
10199 if (isLoadingAd || isAdAvailable ()) {
102100 return ;
103101 }
Original file line number Diff line number Diff line change 1+ package com .d4rk .androidtutorials .java .startup ;
2+
3+ import android .content .Context ;
4+
5+ import androidx .annotation .NonNull ;
6+ import androidx .work .ExistingWorkPolicy ;
7+ import androidx .work .OneTimeWorkRequest ;
8+ import androidx .work .WorkManager ;
9+
10+ /**
11+ * Helper used to enqueue a one-off background job for initializing ads and
12+ * cookies. The work is only scheduled once per app launch sequence.
13+ */
14+ public final class StartupInitializer {
15+
16+ private static final String WORK_NAME = "startup_init" ;
17+
18+ private StartupInitializer () {
19+ // no-op
20+ }
21+
22+ /**
23+ * Schedules the {@link StartupWorker} using {@link WorkManager}. If the work
24+ * is already enqueued, this call is ignored.
25+ */
26+ public static void schedule (@ NonNull Context context ) {
27+ OneTimeWorkRequest workRequest = new OneTimeWorkRequest .Builder (
28+ StartupWorker .class ).build ();
29+ WorkManager .getInstance (context ).enqueueUniqueWork (
30+ WORK_NAME , ExistingWorkPolicy .KEEP , workRequest );
31+ }
32+ }
33+
Original file line number Diff line number Diff line change 1+ package com .d4rk .androidtutorials .java .startup ;
2+
3+ import android .content .Context ;
4+ import android .webkit .CookieManager ;
5+
6+ import androidx .annotation .NonNull ;
7+ import androidx .work .Worker ;
8+ import androidx .work .WorkerParameters ;
9+
10+ import com .d4rk .androidtutorials .java .ads .AdUtils ;
11+
12+ /**
13+ * Background worker that initializes advertising utilities and the
14+ * {@link CookieManager} away from the app's startup path.
15+ */
16+ public class StartupWorker extends Worker {
17+
18+ public StartupWorker (@ NonNull Context context , @ NonNull WorkerParameters params ) {
19+ super (context , params );
20+ }
21+
22+ @ NonNull
23+ @ Override
24+ public Result doWork () {
25+ AdUtils .initialize (getApplicationContext ());
26+ CookieManager .getInstance ();
27+ return Result .success ();
28+ }
29+ }
30+
Original file line number Diff line number Diff line change 4444import com .d4rk .androidtutorials .java .utils .EdgeToEdgeDelegate ;
4545import com .d4rk .androidtutorials .java .utils .ReviewHelper ;
4646import com .d4rk .androidtutorials .java .ads .AdUtils ;
47+ import com .d4rk .androidtutorials .java .startup .StartupInitializer ;
4748import com .google .android .material .navigation .NavigationBarView ;
4849import com .google .android .material .snackbar .Snackbar ;
4950import com .google .android .play .core .appupdate .AppUpdateInfo ;
@@ -112,6 +113,8 @@ protected void onCreate(Bundle savedInstanceState) {
112113 mBinding = ActivityMainBinding .inflate (getLayoutInflater ());
113114 setContentView (mBinding .getRoot ());
114115
116+ StartupInitializer .schedule (this );
117+
115118 mainViewModel = new ViewModelProvider (this ).get (MainViewModel .class );
116119
117120 // Fallback: show the consent form again if required.
Original file line number Diff line number Diff line change 1010import com .d4rk .androidtutorials .java .databinding .ActivityStartupBinding ;
1111import com .d4rk .androidtutorials .java .ui .screens .onboarding .OnboardingActivity ;
1212import com .google .android .ump .ConsentRequestParameters ;
13+ import com .d4rk .androidtutorials .java .startup .StartupInitializer ;
1314
1415import dagger .hilt .android .AndroidEntryPoint ;
1516import me .zhanghai .android .fastscroll .FastScrollerBuilder ;
@@ -25,6 +26,8 @@ protected void onCreate(Bundle savedInstanceState) {
2526 ActivityStartupBinding binding = ActivityStartupBinding .inflate (getLayoutInflater ());
2627 setContentView (binding .getRoot ());
2728
29+ StartupInitializer .schedule (this );
30+
2831 viewModel = new ViewModelProvider (this ).get (StartupViewModel .class );
2932 ConsentRequestParameters params = new ConsentRequestParameters .Builder ().build ();
3033 viewModel .requestConsentInfoUpdate (this , params ,
You can’t perform that action at this time.
0 commit comments