From eb8d5af692d2f18b0074f63b5c02e58d6e68b7a4 Mon Sep 17 00:00:00 2001 From: Mihai-Cristian Condrea Date: Sun, 31 Aug 2025 13:44:22 +0300 Subject: [PATCH] Use lifecycle observer for consent and ads --- .../java/ui/screens/main/MainActivity.java | 49 ++++++++----------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java index 6bad5d10..6f032ecb 100644 --- a/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java +++ b/app/src/main/java/com/d4rk/androidtutorials/java/ui/screens/main/MainActivity.java @@ -2,7 +2,6 @@ import android.app.Activity; import android.content.Intent; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Looper; @@ -13,13 +12,15 @@ import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.IntentSenderRequest; import androidx.activity.result.contract.ActivityResultContracts; -import androidx.annotation.RequiresApi; +import androidx.annotation.NonNull; import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; import androidx.core.content.pm.ShortcutInfoCompat; import androidx.core.content.pm.ShortcutManagerCompat; import androidx.core.graphics.drawable.IconCompat; import androidx.core.splashscreen.SplashScreen; +import androidx.lifecycle.DefaultLifecycleObserver; +import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.ViewModelProvider; import androidx.navigation.NavController; import androidx.navigation.NavGraph; @@ -31,8 +32,6 @@ import com.d4rk.androidtutorials.java.R; import com.d4rk.androidtutorials.java.databinding.ActivityMainBinding; import com.d4rk.androidtutorials.java.notifications.managers.AppUpdateNotificationsManager; -import com.d4rk.androidtutorials.java.notifications.managers.AppUsageNotificationsManager; -import com.d4rk.androidtutorials.java.notifications.managers.QuizReminderManager; import com.d4rk.androidtutorials.java.ui.components.navigation.BottomSheetMenuFragment; import com.d4rk.androidtutorials.java.ui.screens.startup.StartupActivity; import com.d4rk.androidtutorials.java.ui.screens.startup.StartupViewModel; @@ -77,6 +76,23 @@ public class MainActivity extends AppCompatActivity { private AppUpdateNotificationsManager appUpdateNotificationsManager; private AppUpdateManager appUpdateManager; private InstallStateUpdatedListener installStateUpdatedListener; + private final DefaultLifecycleObserver lifecycleObserver = new DefaultLifecycleObserver() { + @Override + public void onResume(@NonNull LifecycleOwner owner) { + ConsentUtils.applyStoredConsent(MainActivity.this); + if (mBinding.adView != null) { + if (ConsentUtils.canShowAds(MainActivity.this)) { + if (mBinding.adView.getVisibility() != View.VISIBLE) { + MobileAds.initialize(MainActivity.this); + mBinding.adView.setVisibility(View.VISIBLE); + mBinding.adView.loadAd(new AdRequest.Builder().build()); + } + } else { + mBinding.adView.setVisibility(View.GONE); + } + } + } + }; @Override protected void onCreate(Bundle savedInstanceState) { @@ -122,6 +138,7 @@ protected void onCreate(Bundle savedInstanceState) { this.appUpdateManager = mainViewModel.getAppUpdateManager(); registerInstallStateListener(); + getLifecycle().addObserver(lifecycleObserver); getOnBackPressedDispatcher().addCallback(this, new OnBackPressedCallback(true) { @Override public void handleOnBackPressed() { @@ -240,30 +257,6 @@ public boolean onOptionsItemSelected(android.view.MenuItem item) { return super.onOptionsItemSelected(item); } - @RequiresApi(api = Build.VERSION_CODES.O) - @Override - protected void onResume() { - super.onResume(); - ConsentUtils.applyStoredConsent(this); - if (mBinding.adView != null) { - if (ConsentUtils.canShowAds(this)) { - if (mBinding.adView.getVisibility() != View.VISIBLE) { - MobileAds.initialize(this); - mBinding.adView.setVisibility(View.VISIBLE); - mBinding.adView.loadAd(new AdRequest.Builder().build()); - } - } else { - mBinding.adView.setVisibility(View.GONE); - } - } - AppUsageNotificationsManager appUsageNotificationsManager = new AppUsageNotificationsManager(this); - appUsageNotificationsManager.scheduleAppUsageCheck(); - QuizReminderManager quizReminderManager = new QuizReminderManager(this); - quizReminderManager.scheduleDailyReminder(); - appUpdateNotificationsManager.checkAndSendUpdateNotification(); - checkForImmediateUpdate(); - } - private void checkForImmediateUpdate() { appUpdateManager .getAppUpdateInfo()