summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/src')
-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 ->