diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-12-17 13:45:44 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-12-17 17:03:26 +0000 |
| commit | 6bb5719b352c3aa96052bcb61f5853dc3023b52d (patch) | |
| tree | 474e31b8cf15b64c1e674f799a0f5540ae50d7ce | |
| parent | 9ff243a6bc1d23409aeec251a3284d52a40dbeff (diff) | |
| download | mullvadvpn-6bb5719b352c3aa96052bcb61f5853dc3023b52d.tar.xz mullvadvpn-6bb5719b352c3aa96052bcb61f5853dc3023b52d.zip | |
Remove service connection coroutines
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 3 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt | 54 |
2 files changed, 17 insertions, 40 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt index 3b39862102..fb2c92736c 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -55,9 +55,6 @@ class MullvadVpnService : TalpidVpnService() { val serviceNotifier get() = this@MullvadVpnService.serviceNotifier - val resetComplete - get() = this@MullvadVpnService.resetComplete - fun stop() { this@MullvadVpnService.stop() } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt index cd417c3d66..71c8ffdfb5 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt @@ -6,12 +6,9 @@ import android.content.Intent import android.os.Bundle import android.os.IBinder import android.support.v4.app.FragmentActivity -import kotlinx.coroutines.CompletableDeferred import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.Job import kotlinx.coroutines.launch -import kotlinx.coroutines.runBlocking import net.mullvad.mullvadvpn.R import net.mullvad.mullvadvpn.dataproxy.MullvadProblemReport import net.mullvad.mullvadvpn.service.MullvadVpnService @@ -22,24 +19,21 @@ class MainActivity : FragmentActivity() { val KEY_SHOULD_CONNECT = "should_connect" } - private var serviceConnection: ServiceConnection? = null - private var serviceConnectionSubscription: Int? = null - - var service = CompletableDeferred<MullvadVpnService.LocalBinder>() - private set - val problemReport = MullvadProblemReport() val serviceNotifier = EventNotifier<ServiceConnection?>(null) - private var quitJob: Job? = null - private var serviceToStop: MullvadVpnService.LocalBinder? = null + private var service: MullvadVpnService.LocalBinder? = null + private var serviceConnection: ServiceConnection? = null + private var serviceConnectionSubscription: Int? = null private var shouldConnect = false - private var waitForDaemonJob: Job? = null + private var shouldStopService = false private val serviceConnectionManager = object : android.content.ServiceConnection { override fun onServiceConnected(className: ComponentName, binder: IBinder) { val localBinder = binder as MullvadVpnService.LocalBinder + service = localBinder + serviceConnectionSubscription = localBinder.serviceNotifier.subscribe { service -> serviceConnection?.onDestroy() @@ -54,27 +48,17 @@ class MainActivity : FragmentActivity() { tryToConnect() } } - - waitForDaemonJob = GlobalScope.launch(Dispatchers.Default) { - localBinder.resetComplete?.await() - service.complete(localBinder) - } } override fun onServiceDisconnected(className: ComponentName) { - waitForDaemonJob?.cancel() - waitForDaemonJob = null - - serviceConnectionSubscription?.let { subscription -> - runBlocking { - service.await().serviceNotifier.unsubscribe(subscription) + serviceConnectionSubscription?.let { subscriptionId -> + service?.apply { + serviceNotifier.unsubscribe(subscriptionId) } - serviceConnection = null } - service.cancel() - service = CompletableDeferred<MullvadVpnService.LocalBinder>() - + serviceConnection = null + serviceConnectionSubscription = null serviceNotifier.notify(null) } } @@ -107,11 +91,12 @@ class MainActivity : FragmentActivity() { } override fun onStop() { - quitJob?.cancel() - serviceNotifier.unsubscribeAll() - serviceToStop?.apply { stop() } + if (shouldStopService) { + service?.apply { stop() } + } + unbindService(serviceConnectionManager) super.onStop() @@ -120,8 +105,6 @@ class MainActivity : FragmentActivity() { override fun onDestroy() { serviceConnection?.onDestroy() - waitForDaemonJob?.cancel() - super.onDestroy() } @@ -144,11 +127,8 @@ class MainActivity : FragmentActivity() { } fun quit() { - quitJob?.cancel() - quitJob = GlobalScope.launch(Dispatchers.Main) { - serviceToStop = service.await() - finishAndRemoveTask() - } + shouldStopService = true + finishAndRemoveTask() } private fun tryToConnect() { |
