summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-09-11 15:28:06 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-09-13 12:14:19 +0000
commite18eb7b62d24687b8f5409140d90a24e86cb8f05 (patch)
tree0a33b53e7010b1ebae5097d8d4e437aa3e28a47e /android
parentf664e5e245804754b15a086d810c81a2f376da0d (diff)
downloadmullvadvpn-e18eb7b62d24687b8f5409140d90a24e86cb8f05.tar.xz
mullvadvpn-e18eb7b62d24687b8f5409140d90a24e86cb8f05.zip
Refactor how `MainActivity` quits
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt17
1 files changed, 10 insertions, 7 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
index fff27be8b5..ebaeb76538 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt
@@ -49,7 +49,8 @@ class MainActivity : FragmentActivity() {
val locationInfoCache = LocationInfoCache(daemon, relayListListener)
val accountCache = AccountCache(settingsListener, daemon)
- private var shouldStopService = false
+ private var quitJob: Job? = null
+ private var serviceToStop: MullvadVpnService.LocalBinder? = null
private var waitForDaemonJob: Job? = null
private val serviceConnection = object : ServiceConnection {
@@ -101,10 +102,9 @@ class MainActivity : FragmentActivity() {
}
override fun onStop() {
- if (shouldStopService) {
- runBlocking { service.await().stop() }
- }
+ quitJob?.cancel()
+ serviceToStop?.apply { stop() }
unbindService(serviceConnection)
super.onStop()
@@ -143,9 +143,12 @@ class MainActivity : FragmentActivity() {
startActivityForResult(intent, 0)
}
- fun quit() {
- shouldStopService = true
- finishAndRemoveTask()
+ fun quit() {
+ quitJob?.cancel()
+ quitJob = GlobalScope.launch(Dispatchers.Main) {
+ serviceToStop = service.await()
+ finishAndRemoveTask()
+ }
}
private fun addInitialFragment() {