Răsfoiți Sursa

Library updater is now a foreground service

len 7 ani în urmă
părinte
comite
f45efe2aa8

+ 8 - 1
app/src/main/java/eu/kanade/tachiyomi/data/library/LibraryUpdateService.kt

@@ -81,9 +81,11 @@ class LibraryUpdateService(
      * Cached progress notification to avoid creating a lot.
      */
     private val progressNotification by lazy { NotificationCompat.Builder(this, Notifications.CHANNEL_LIBRARY)
+            .setContentTitle(getString(R.string.app_name))
             .setSmallIcon(R.drawable.ic_refresh_white_24dp_img)
             .setLargeIcon(notificationBitmap)
             .setOngoing(true)
+            .setOnlyAlertOnce(true)
             .addAction(R.drawable.ic_clear_grey_24dp_img, getString(android.R.string.cancel), cancelIntent)
     }
 
@@ -132,7 +134,11 @@ class LibraryUpdateService(
                     putExtra(KEY_TARGET, target)
                     category?.let { putExtra(KEY_CATEGORY, it.id) }
                 }
-                context.startService(intent)
+                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+                    context.startService(intent)
+                } else {
+                    context.startForegroundService(intent)
+                }
             }
         }
 
@@ -153,6 +159,7 @@ class LibraryUpdateService(
      */
     override fun onCreate() {
         super.onCreate()
+        startForeground(Notifications.ID_LIBRARY_PROGRESS, progressNotification.build())
         wakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager).newWakeLock(
                 PowerManager.PARTIAL_WAKE_LOCK, "LibraryUpdateService:WakeLock")
         wakeLock.acquire()

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

@@ -82,6 +82,7 @@ internal class UpdateDownloaderReceiver(val context: Context) : BroadcastReceive
     private fun updateProgress(progress: Int) {
         with(notification) {
             setProgress(100, progress, false)
+            setOnlyAlertOnce(true)
         }
         notification.show()
     }
@@ -96,6 +97,7 @@ internal class UpdateDownloaderReceiver(val context: Context) : BroadcastReceive
         with(notification) {
             setContentText(context.getString(R.string.update_check_notification_download_complete))
             setSmallIcon(android.R.drawable.stat_sys_download_done)
+            setOnlyAlertOnce(false)
             setProgress(0, 0, false)
             // Install action
             setContentIntent(NotificationHandler.installApkPendingActivity(context, File(path)))
@@ -120,6 +122,7 @@ internal class UpdateDownloaderReceiver(val context: Context) : BroadcastReceive
         with(notification) {
             setContentText(context.getString(R.string.update_check_notification_download_error))
             setSmallIcon(android.R.drawable.stat_sys_warning)
+            setOnlyAlertOnce(false)
             setProgress(0, 0, false)
             // Retry action
             addAction(R.drawable.ic_refresh_grey_24dp_img,