mirror of
https://github.com/Michatec/michas-droid.git
synced 2026-05-30 18:02:43 +02:00
Schedule job if necessary only
This commit is contained in:
@@ -56,7 +56,7 @@ class MainApplication: Application() {
|
||||
}
|
||||
|
||||
Cache.cleanup(this)
|
||||
updateSyncJob()
|
||||
updateSyncJob(false)
|
||||
}
|
||||
|
||||
private fun listenApplications() {
|
||||
@@ -102,7 +102,7 @@ class MainApplication: Application() {
|
||||
val autoSync = Preferences[Preferences.Key.AutoSync]
|
||||
if (lastAutoSync != autoSync) {
|
||||
lastAutoSync = autoSync
|
||||
updateSyncJob()
|
||||
updateSyncJob(true)
|
||||
}
|
||||
} else if (it == Preferences.Key.UpdateUnstable) {
|
||||
val updateUnstable = Preferences[Preferences.Key.UpdateUnstable]
|
||||
@@ -114,34 +114,37 @@ class MainApplication: Application() {
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateSyncJob() {
|
||||
val autoSync = Preferences[Preferences.Key.AutoSync]
|
||||
private fun updateSyncJob(force: Boolean) {
|
||||
val jobScheduler = getSystemService(JOB_SCHEDULER_SERVICE) as JobScheduler
|
||||
when (autoSync) {
|
||||
Preferences.AutoSync.Never -> {
|
||||
jobScheduler.cancel(Common.JOB_ID_SYNC)
|
||||
}
|
||||
Preferences.AutoSync.Wifi, Preferences.AutoSync.Always -> {
|
||||
val period = 12 * 60 * 60 * 1000L // 12 hours
|
||||
val wifiOnly = autoSync == Preferences.AutoSync.Wifi
|
||||
jobScheduler.schedule(JobInfo
|
||||
.Builder(Common.JOB_ID_SYNC, ComponentName(this, SyncService.Job::class.java))
|
||||
.setRequiredNetworkType(if (wifiOnly) JobInfo.NETWORK_TYPE_UNMETERED else JobInfo.NETWORK_TYPE_ANY)
|
||||
.apply {
|
||||
if (Android.sdk(26)) {
|
||||
setRequiresBatteryNotLow(true)
|
||||
setRequiresStorageNotLow(true)
|
||||
val reschedule = force || !jobScheduler.allPendingJobs.any { it.id == Common.JOB_ID_SYNC }
|
||||
if (reschedule) {
|
||||
val autoSync = Preferences[Preferences.Key.AutoSync]
|
||||
when (autoSync) {
|
||||
Preferences.AutoSync.Never -> {
|
||||
jobScheduler.cancel(Common.JOB_ID_SYNC)
|
||||
}
|
||||
Preferences.AutoSync.Wifi, Preferences.AutoSync.Always -> {
|
||||
val period = 12 * 60 * 60 * 1000L // 12 hours
|
||||
val wifiOnly = autoSync == Preferences.AutoSync.Wifi
|
||||
jobScheduler.schedule(JobInfo
|
||||
.Builder(Common.JOB_ID_SYNC, ComponentName(this, SyncService.Job::class.java))
|
||||
.setRequiredNetworkType(if (wifiOnly) JobInfo.NETWORK_TYPE_UNMETERED else JobInfo.NETWORK_TYPE_ANY)
|
||||
.apply {
|
||||
if (Android.sdk(26)) {
|
||||
setRequiresBatteryNotLow(true)
|
||||
setRequiresStorageNotLow(true)
|
||||
}
|
||||
if (Android.sdk(24)) {
|
||||
setPeriodic(period, JobInfo.getMinFlexMillis())
|
||||
} else {
|
||||
setPeriodic(period)
|
||||
}
|
||||
}
|
||||
if (Android.sdk(24)) {
|
||||
setPeriodic(period, JobInfo.getMinFlexMillis())
|
||||
} else {
|
||||
setPeriodic(period)
|
||||
}
|
||||
}
|
||||
.build())
|
||||
Unit
|
||||
}
|
||||
}::class.java
|
||||
.build())
|
||||
Unit
|
||||
}
|
||||
}::class.java
|
||||
}
|
||||
}
|
||||
|
||||
private fun updateProxy() {
|
||||
|
||||
Reference in New Issue
Block a user