Delete old alarm
Cette révision appartient à :
Parent
8fc467652d
révision
5b4ed6f926
2 fichiers modifiés avec 1 ajouts et 86 suppressions
|
@ -1,83 +0,0 @@
|
|||
package eu.kanade.tachiyomi.data.library
|
||||
|
||||
import android.app.AlarmManager
|
||||
import android.app.PendingIntent
|
||||
import android.content.BroadcastReceiver
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.SystemClock
|
||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
|
||||
import eu.kanade.tachiyomi.util.alarmManager
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
/**
|
||||
* This class is used to update the library by firing an alarm after a specified time.
|
||||
* It has a receiver reacting to system's boot and the intent fired by this alarm.
|
||||
* See [onReceive] for more information.
|
||||
*/
|
||||
class LibraryUpdateAlarm : BroadcastReceiver() {
|
||||
|
||||
companion object {
|
||||
const val LIBRARY_UPDATE_ACTION = "eu.kanade.UPDATE_LIBRARY"
|
||||
|
||||
/**
|
||||
* Sets the alarm to run the intent that updates the library.
|
||||
* @param context the application context.
|
||||
* @param intervalInHours the time in hours when it will be executed. Defaults to the
|
||||
* value stored in preferences.
|
||||
*/
|
||||
fun startAlarm(context: Context,
|
||||
intervalInHours: Int = Injekt.get<PreferencesHelper>().libraryUpdateInterval().getOrDefault()) {
|
||||
// Stop previous running alarms if needed, and do not restart it if the interval is 0.
|
||||
stopAlarm(context)
|
||||
if (intervalInHours == 0)
|
||||
return
|
||||
|
||||
// Get the time the alarm should fire the event to update.
|
||||
val intervalInMillis = intervalInHours * 60 * 60 * 1000
|
||||
val nextRun = SystemClock.elapsedRealtime() + intervalInMillis
|
||||
|
||||
// Start the alarm.
|
||||
val pendingIntent = getPendingIntent(context)
|
||||
context.alarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
|
||||
nextRun, intervalInMillis.toLong(), pendingIntent)
|
||||
}
|
||||
|
||||
/**
|
||||
* Stops the alarm if it's running.
|
||||
* @param context the application context.
|
||||
*/
|
||||
fun stopAlarm(context: Context) {
|
||||
val pendingIntent = getPendingIntent(context)
|
||||
context.alarmManager.cancel(pendingIntent)
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the intent the alarm should run when it's fired.
|
||||
* @param context the application context.
|
||||
* @return the intent that will run when the alarm is fired.
|
||||
*/
|
||||
private fun getPendingIntent(context: Context): PendingIntent {
|
||||
val intent = Intent(context, LibraryUpdateAlarm::class.java)
|
||||
intent.action = LIBRARY_UPDATE_ACTION
|
||||
return PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the intents received by this [BroadcastReceiver].
|
||||
* @param context the application context.
|
||||
* @param intent the intent to process.
|
||||
*/
|
||||
override fun onReceive(context: Context, intent: Intent) {
|
||||
when (intent.action) {
|
||||
// Start the alarm when the system is booted.
|
||||
Intent.ACTION_BOOT_COMPLETED -> startAlarm(context)
|
||||
// Update the library when the alarm fires an event.
|
||||
LIBRARY_UPDATE_ACTION -> LibraryUpdateService.start(context)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
|
@ -143,7 +143,6 @@ class LibraryUpdateService : Service() {
|
|||
subscription?.unsubscribe()
|
||||
notificationBitmap?.recycle()
|
||||
notificationBitmap = null
|
||||
LibraryUpdateAlarm.startAlarm(this)
|
||||
destroyWakeLock()
|
||||
super.onDestroy()
|
||||
}
|
||||
|
@ -188,10 +187,8 @@ class LibraryUpdateService : Service() {
|
|||
.subscribe({
|
||||
}, {
|
||||
showNotification(getString(R.string.notification_update_error), "")
|
||||
LibraryUpdateTrigger.setupTask(this)
|
||||
stopSelf(startId)
|
||||
}, {
|
||||
LibraryUpdateTrigger.setupTask(this)
|
||||
stopSelf(startId)
|
||||
})
|
||||
|
||||
|
@ -270,6 +267,7 @@ class LibraryUpdateService : Service() {
|
|||
} else {
|
||||
showResultNotification(newUpdates, failedUpdates)
|
||||
}
|
||||
LibraryUpdateTrigger.setupTask(this)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Référencer dans un nouveau ticket