ソースを参照

Remove background app update check

We already check in the foreground. If the app isn't being foregrounded at all, then there isn't much
point in checking for an update.
arkon 2 年 前
コミット
42954609b9

+ 1 - 1
app/build.gradle.kts

@@ -22,7 +22,7 @@ android {
 
     defaultConfig {
         applicationId = "eu.kanade.tachiyomi"
-        versionCode = 96
+        versionCode = 97
         versionName = "0.14.4"
 
         buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")

+ 4 - 21
app/src/main/java/eu/kanade/tachiyomi/Migrations.kt

@@ -1,9 +1,9 @@
 package eu.kanade.tachiyomi
 
 import android.content.Context
-import android.os.Build
 import androidx.core.content.edit
 import androidx.preference.PreferenceManager
+import androidx.work.WorkManager
 import eu.kanade.domain.backup.service.BackupPreferences
 import eu.kanade.domain.base.BasePreferences
 import eu.kanade.domain.library.service.LibraryPreferences
@@ -15,7 +15,6 @@ import eu.kanade.tachiyomi.data.library.LibraryUpdateJob
 import eu.kanade.tachiyomi.data.preference.MANGA_NON_COMPLETED
 import eu.kanade.tachiyomi.data.preference.PreferenceValues
 import eu.kanade.tachiyomi.data.track.TrackManager
-import eu.kanade.tachiyomi.data.updater.AppUpdateJob
 import eu.kanade.tachiyomi.extension.ExtensionUpdateJob
 import eu.kanade.tachiyomi.network.NetworkPreferences
 import eu.kanade.tachiyomi.network.PREF_DOH_CLOUDFLARE
@@ -56,9 +55,6 @@ object Migrations {
             lastVersionCode.set(BuildConfig.VERSION_CODE)
 
             // Always set up background tasks to ensure they're running
-            if (BuildConfig.INCLUDE_UPDATER) {
-                AppUpdateJob.setupTask(context)
-            }
             ExtensionUpdateJob.setupTask(context)
             LibraryUpdateJob.setupTask(context)
             BackupCreatorJob.setupTask(context)
@@ -72,9 +68,6 @@ object Migrations {
 
             if (oldVersion < 14) {
                 // Restore jobs after upgrading to Evernote's job scheduler.
-                if (BuildConfig.INCLUDE_UPDATER) {
-                    AppUpdateJob.setupTask(context)
-                }
                 LibraryUpdateJob.setupTask(context)
             }
             if (oldVersion < 15) {
@@ -105,9 +98,6 @@ object Migrations {
             }
             if (oldVersion < 43) {
                 // Restore jobs after migrating from Evernote's job scheduler to WorkManager.
-                if (BuildConfig.INCLUDE_UPDATER) {
-                    AppUpdateJob.setupTask(context)
-                }
                 LibraryUpdateJob.setupTask(context)
                 BackupCreatorJob.setupTask(context)
 
@@ -172,18 +162,8 @@ object Migrations {
                         putInt("pref_rotation_type_key", 1)
                     }
                 }
-
-                // Disable update check for Android 5.x users
-                if (BuildConfig.INCLUDE_UPDATER && Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
-                    AppUpdateJob.cancelTask(context)
-                }
             }
             if (oldVersion < 60) {
-                // Re-enable update check that was previously accidentally disabled for M
-                if (BuildConfig.INCLUDE_UPDATER && Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
-                    AppUpdateJob.setupTask(context)
-                }
-
                 // Migrate Rotation and Viewer values to default values for viewer_flags
                 val newOrientation = when (prefs.getInt("pref_rotation_type_key", 1)) {
                     1 -> OrientationType.FREE.flagValue
@@ -352,6 +332,9 @@ object Migrations {
                 LibraryUpdateJob.cancelAllWorks(context)
                 LibraryUpdateJob.setupTask(context)
             }
+            if (oldVersion < 97) {
+                WorkManager.getInstance(context).cancelAllWorkByTag("UpdateChecker")
+            }
             return true
         }
 

+ 3 - 3
app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateChecker.kt

@@ -12,7 +12,7 @@ import tachiyomi.core.preference.PreferenceStore
 import tachiyomi.core.util.lang.withIOContext
 import uy.kohesive.injekt.injectLazy
 import java.util.Date
-import java.util.concurrent.TimeUnit
+import kotlin.time.Duration.Companion.days
 
 class AppUpdateChecker {
 
@@ -23,8 +23,8 @@ class AppUpdateChecker {
     }
 
     suspend fun checkForUpdate(context: Context, isUserPrompt: Boolean = false): AppUpdateResult {
-        // Limit checks to once a day at most
-        if (isUserPrompt.not() && Date().time < lastAppCheck.get() + TimeUnit.DAYS.toMillis(1)) {
+        // Limit checks to once every 3 days at most
+        if (isUserPrompt.not() && Date().time < lastAppCheck.get() + 3.days.inWholeMilliseconds) {
             return AppUpdateResult.NoNewUpdate
         }
 

+ 0 - 61
app/src/main/java/eu/kanade/tachiyomi/data/updater/AppUpdateJob.kt

@@ -1,61 +0,0 @@
-package eu.kanade.tachiyomi.data.updater
-
-import android.content.Context
-import androidx.work.Constraints
-import androidx.work.CoroutineWorker
-import androidx.work.ExistingPeriodicWorkPolicy
-import androidx.work.NetworkType
-import androidx.work.PeriodicWorkRequestBuilder
-import androidx.work.WorkManager
-import androidx.work.WorkerParameters
-import eu.kanade.tachiyomi.BuildConfig
-import kotlinx.coroutines.coroutineScope
-import logcat.LogPriority
-import tachiyomi.core.util.system.logcat
-import java.util.concurrent.TimeUnit
-
-class AppUpdateJob(private val context: Context, workerParams: WorkerParameters) :
-    CoroutineWorker(context, workerParams) {
-
-    override suspend fun doWork() = coroutineScope {
-        try {
-            AppUpdateChecker().checkForUpdate(context)
-            Result.success()
-        } catch (e: Exception) {
-            logcat(LogPriority.ERROR, e)
-            Result.failure()
-        }
-    }
-
-    companion object {
-        private const val TAG = "UpdateChecker"
-
-        fun setupTask(context: Context) {
-            // Never check for updates in builds that don't include the updater
-            if (!BuildConfig.INCLUDE_UPDATER) {
-                cancelTask(context)
-                return
-            }
-
-            val constraints = Constraints(
-                requiredNetworkType = NetworkType.CONNECTED,
-            )
-
-            val request = PeriodicWorkRequestBuilder<AppUpdateJob>(
-                7,
-                TimeUnit.DAYS,
-                3,
-                TimeUnit.HOURS,
-            )
-                .addTag(TAG)
-                .setConstraints(constraints)
-                .build()
-
-            WorkManager.getInstance(context).enqueueUniquePeriodicWork(TAG, ExistingPeriodicWorkPolicy.UPDATE, request)
-        }
-
-        fun cancelTask(context: Context) {
-            WorkManager.getInstance(context).cancelAllWorkByTag(TAG)
-        }
-    }
-}