summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-27 16:17:24 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-04-28 16:52:50 +0000
commitd67ddcba6d65a5d4a7d86c9d7ab065414c9e1bb0 (patch)
treee3f0e85bdbd9c669d85e3e8950290023e1de476a /android
parent44059b8dd2a862fafb831c8d1bdd67284fba14a6 (diff)
downloadmullvadvpn-d67ddcba6d65a5d4a7d86c9d7ab065414c9e1bb0.tar.xz
mullvadvpn-d67ddcba6d65a5d4a7d86c9d7ab065414c9e1bb0.zip
Implement tracking background computations
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt9
1 files changed, 9 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt
index 29802b5bce..7be0668f61 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt
@@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.util
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.Job
+import kotlinx.coroutines.async
import kotlinx.coroutines.launch
class JobTracker {
@@ -49,6 +50,14 @@ class JobTracker {
return newJob(name, GlobalScope.launch(Dispatchers.Main) { jobBody() })
}
+ suspend fun <T> runOnBackground(jobBody: suspend () -> T): T {
+ val job = GlobalScope.async(Dispatchers.Default) { jobBody() }
+
+ newJob(job)
+
+ return job.await()
+ }
+
fun cancelJob(name: String) {
synchronized(namedJobs) {
namedJobs.remove(name)?.let { oldJobId ->