From 16011b1963bb57f4c5a91ae92bf3585e3e45fbab Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Sat, 2 Aug 2025 09:00:26 -0500 Subject: [PATCH] Target Android 16 --- app/src/main/AndroidManifest.xml | 1 + .../java/com/todoroo/andlib/utility/AndroidUtilities.kt | 4 ++++ app/src/main/java/org/tasks/TasksApplication.kt | 9 ++++++++- app/src/main/java/org/tasks/injection/BaseWorker.kt | 7 ++++++- gradle/libs.versions.toml | 2 +- 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index aae3a6753..5e9866ba8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -159,6 +159,7 @@ = VERSION_CODES.TIRAMISU } + fun atLeastAndroid15(): Boolean { + return Build.VERSION.SDK_INT >= VERSION_CODES.VANILLA_ICE_CREAM + } + fun atLeastAndroid16(): Boolean { return Build.VERSION.SDK_INT >= VERSION_CODES.BAKLAVA } diff --git a/app/src/main/java/org/tasks/TasksApplication.kt b/app/src/main/java/org/tasks/TasksApplication.kt index 485ebf7cd..a23d2cf55 100644 --- a/app/src/main/java/org/tasks/TasksApplication.kt +++ b/app/src/main/java/org/tasks/TasksApplication.kt @@ -17,6 +17,7 @@ import androidx.lifecycle.ProcessLifecycleOwner import androidx.lifecycle.coroutineScope import androidx.work.Configuration import com.mikepenz.iconics.Iconics +import com.todoroo.andlib.utility.AndroidUtilities.atLeastAndroid15 import com.todoroo.andlib.utility.AndroidUtilities.atLeastR import com.todoroo.astrid.service.Upgrader import dagger.Lazy @@ -102,11 +103,17 @@ class TasksApplication : Application(), Configuration.Provider { Timber.i("Astrid Startup. %s => %s", lastVersion, currentVersion) if (atLeastR()) { scope.launch { - val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager + val activityManager = getSystemService(ACTIVITY_SERVICE) as ActivityManager val exitReasons = activityManager.getHistoricalProcessExitReasons(null, 0, 1) logExitReasons(exitReasons) } } + if (atLeastAndroid15()) { + val activityManager = getSystemService(ACTIVITY_SERVICE) as ActivityManager + activityManager.addApplicationStartInfoCompletionListener(mainExecutor) { startInfo -> + Timber.d("Application was force stopped: ${startInfo.wasForceStopped()}") + } + } // invoke upgrade service if (lastVersion != currentVersion) { diff --git a/app/src/main/java/org/tasks/injection/BaseWorker.kt b/app/src/main/java/org/tasks/injection/BaseWorker.kt index c4661a568..1193db3a7 100644 --- a/app/src/main/java/org/tasks/injection/BaseWorker.kt +++ b/app/src/main/java/org/tasks/injection/BaseWorker.kt @@ -3,6 +3,7 @@ package org.tasks.injection import android.content.Context import androidx.work.Worker import androidx.work.WorkerParameters +import com.todoroo.andlib.utility.AndroidUtilities.atLeastAndroid16 import kotlinx.coroutines.runBlocking import org.tasks.analytics.Firebase import timber.log.Timber @@ -14,7 +15,11 @@ abstract class BaseWorker( ) : Worker(context, workerParams) { override fun doWork(): Result { - Timber.d("${javaClass.simpleName} $id $inputData") + if (atLeastAndroid16()) { + Timber.d("${javaClass.simpleName} $id $inputData attempt=$runAttemptCount ${if (runAttemptCount > 0) "stopReason=$stopReason" else ""}") + } else { + Timber.d("${javaClass.simpleName} $id $inputData attempt=$runAttemptCount") + } return try { runBlocking { run() diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 364f4f7bd..2e8901f6e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -4,7 +4,7 @@ versionName = "14.8" agp = "8.12.0" android-compileSdk = "36" android-minSdk = "26" -android-targetSdk = "34" +android-targetSdk = "36" accompanist = "0.37.3" activity-compose = "1.10.1" appauth = "0.11.1"