Cache suspended apps

This commit is contained in:
Jonas Lochmann 2020-07-06 02:00:00 +02:00
parent 303baca7a4
commit 9731350423
No known key found for this signature in database
GPG key ID: 8B8C9AEE10FA5B36

View file

@ -40,6 +40,7 @@ class SuspendAppsLogic(private val appLogic: AppLogic): Observer {
private var batteryStatus = appLogic.platformIntegration.getBatteryStatus()
private val pendingSync = AtomicBoolean(true)
private val executor = Executors.newSingleThreadExecutor()
private var lastSuspendedApps: List<String>? = null
private val backgroundRunnable = Runnable {
while (pendingSync.getAndSet(false)) {
@ -83,6 +84,7 @@ class SuspendAppsLogic(private val appLogic: AppLogic): Observer {
if (!enableBlocking) {
appLogic.platformIntegration.stopSuspendingForAllApps()
lastSuspendedApps = emptyList()
lastAllowedCategoryList = emptySet()
lastCategoryApps = emptyList()
@ -200,14 +202,18 @@ class SuspendAppsLogic(private val appLogic: AppLogic): Observer {
}
private fun applySuspendedApps(packageNames: List<String>) {
if (packageNames.isEmpty()) {
if (packageNames == lastSuspendedApps) {
// nothing to do
} else if (packageNames.isEmpty()) {
appLogic.platformIntegration.stopSuspendingForAllApps()
lastSuspendedApps = emptyList()
} else {
val allApps = appLogic.platformIntegration.getLocalAppPackageNames()
val appsToNotBlock = allApps.subtract(packageNames)
appLogic.platformIntegration.setSuspendedApps(appsToNotBlock.toList(), false)
appLogic.platformIntegration.setSuspendedApps(packageNames, true)
lastSuspendedApps = packageNames
}
}
}