Make weather updates more reliable

This commit is contained in:
azuo
2021-10-15 14:42:38 +08:00
parent d8e204c5d9
commit fb3f28d035
10 changed files with 266 additions and 249 deletions

View File

@ -1,18 +1,12 @@
package com.tommasoberlose.anotherwidget.receivers
import android.app.AlarmManager
import android.app.PendingIntent
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import com.tommasoberlose.anotherwidget.global.Actions
import com.tommasoberlose.anotherwidget.global.Preferences
import com.tommasoberlose.anotherwidget.helpers.WeatherHelper
import com.tommasoberlose.anotherwidget.services.WeatherWorker
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import java.util.concurrent.TimeUnit
class WeatherReceiver : BroadcastReceiver() {
@ -22,10 +16,9 @@ class WeatherReceiver : BroadcastReceiver() {
Intent.ACTION_MY_PACKAGE_REPLACED,
Intent.ACTION_TIMEZONE_CHANGED,
Intent.ACTION_LOCALE_CHANGED,
Intent.ACTION_TIME_CHANGED -> setUpdates(context)
Intent.ACTION_TIME_CHANGED,
Actions.ACTION_WEATHER_UPDATE -> {
WeatherWorker.enqueue(context)
WeatherHelper.updateWeather(context)
}
}
}
@ -33,21 +26,12 @@ class WeatherReceiver : BroadcastReceiver() {
companion object {
fun setUpdates(context: Context) {
if (Preferences.showWeather) {
val interval = when (Preferences.weatherRefreshPeriod) {
0 -> 30
1 -> 60
2 -> 60L * 3
3 -> 60L * 6
4 -> 60L * 12
5 -> 60L * 24
else -> 60
}
WeatherWorker.enqueuePeriodic(context, interval, TimeUnit.MINUTES)
WeatherWorker.enqueueTrigger(context)
}
}
fun removeUpdates(context: Context) {
WeatherWorker.cancelPeriodic(context)
WeatherWorker.cancelTrigger(context)
}
}
}