Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import android.app.Application.ActivityLifecycleCallbacks;
import android.content.Context;
import android.os.Bundle;
import android.webkit.CookieManager;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
Expand Down Expand Up @@ -35,8 +34,6 @@ public class AppOpenAd extends Application implements ActivityLifecycleCallbacks
public void onCreate() {
super.onCreate();
registerActivityLifecycleCallbacks(this);
AdUtils.initialize(this);
CookieManager.getInstance();
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
appOpenAdManager = new AppOpenAdManager(this);
}
Expand Down Expand Up @@ -98,6 +95,7 @@ public AppOpenAdManager(Application application) {
}

private void loadAd(Context context) {
AdUtils.initialize(context);
if (isLoadingAd || isAdAvailable()) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.d4rk.androidtutorials.java.startup;

import android.content.Context;

import androidx.annotation.NonNull;
import androidx.work.ExistingWorkPolicy;
import androidx.work.OneTimeWorkRequest;
import androidx.work.WorkManager;

/**
* Helper used to enqueue a one-off background job for initializing ads and
* cookies. The work is only scheduled once per app launch sequence.
*/
public final class StartupInitializer {

private static final String WORK_NAME = "startup_init";

private StartupInitializer() {
// no-op
}

/**
* Schedules the {@link StartupWorker} using {@link WorkManager}. If the work
* is already enqueued, this call is ignored.
*/
public static void schedule(@NonNull Context context) {
OneTimeWorkRequest workRequest = new OneTimeWorkRequest.Builder(
StartupWorker.class).build();
WorkManager.getInstance(context).enqueueUniqueWork(
WORK_NAME, ExistingWorkPolicy.KEEP, workRequest);
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.d4rk.androidtutorials.java.startup;

import android.content.Context;
import android.webkit.CookieManager;

import androidx.annotation.NonNull;
import androidx.work.Worker;
import androidx.work.WorkerParameters;

import com.d4rk.androidtutorials.java.ads.AdUtils;

/**
* Background worker that initializes advertising utilities and the
* {@link CookieManager} away from the app's startup path.
*/
public class StartupWorker extends Worker {

public StartupWorker(@NonNull Context context, @NonNull WorkerParameters params) {
super(context, params);
}

@NonNull
@Override
public Result doWork() {
AdUtils.initialize(getApplicationContext());
CookieManager.getInstance();
return Result.success();
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import com.d4rk.androidtutorials.java.utils.EdgeToEdgeDelegate;
import com.d4rk.androidtutorials.java.utils.ReviewHelper;
import com.d4rk.androidtutorials.java.ads.AdUtils;
import com.d4rk.androidtutorials.java.startup.StartupInitializer;
import com.google.android.material.navigation.NavigationBarView;
import com.google.android.material.snackbar.Snackbar;
import com.google.android.play.core.appupdate.AppUpdateInfo;
Expand Down Expand Up @@ -112,6 +113,8 @@ protected void onCreate(Bundle savedInstanceState) {
mBinding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(mBinding.getRoot());

StartupInitializer.schedule(this);

mainViewModel = new ViewModelProvider(this).get(MainViewModel.class);

// Fallback: show the consent form again if required.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.d4rk.androidtutorials.java.databinding.ActivityStartupBinding;
import com.d4rk.androidtutorials.java.ui.screens.onboarding.OnboardingActivity;
import com.google.android.ump.ConsentRequestParameters;
import com.d4rk.androidtutorials.java.startup.StartupInitializer;

import dagger.hilt.android.AndroidEntryPoint;
import me.zhanghai.android.fastscroll.FastScrollerBuilder;
Expand All @@ -25,6 +26,8 @@ protected void onCreate(Bundle savedInstanceState) {
ActivityStartupBinding binding = ActivityStartupBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

StartupInitializer.schedule(this);

viewModel = new ViewModelProvider(this).get(StartupViewModel.class);
ConsentRequestParameters params = new ConsentRequestParameters.Builder().build();
viewModel.requestConsentInfoUpdate(this, params,
Expand Down