diff options
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/util/JobTracker.kt | 9 |
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 -> |
