diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/app/src/main/AndroidManifest.xml | 3 | ||||
| -rw-r--r-- | android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 10 |
2 files changed, 12 insertions, 1 deletions
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index e309f71016..5216de46d2 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -51,7 +51,8 @@ </activity> <service android:name="net.mullvad.mullvadvpn.service.MullvadVpnService" android:permission="android.permission.BIND_VPN_SERVICE" - android:process=":mullvadvpn_daemon"> + android:process=":mullvadvpn_daemon" + android:stopWithTask="false"> <intent-filter> <action android:name="android.net.VpnService" /> </intent-filter> diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt index 71067c44d7..d09472fa3d 100644 --- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -13,6 +13,7 @@ import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.Job import kotlinx.coroutines.launch import net.mullvad.mullvadvpn.model.Settings +import net.mullvad.mullvadvpn.model.TunnelState import net.mullvad.mullvadvpn.service.endpoint.ServiceEndpoint import net.mullvad.mullvadvpn.service.notifications.AccountExpiryNotification import net.mullvad.mullvadvpn.ui.MainActivity @@ -169,6 +170,15 @@ class MullvadVpnService : TalpidVpnService() { super.onDestroy() } + override fun onTaskRemoved(rootIntent: Intent?) { + connectionProxy.onStateChange.latestEvent.let { tunnelState -> + Log.d(TAG, "Task removed (tunnelState=$tunnelState)") + if (tunnelState == TunnelState.Disconnected) { + stop() + } + } + } + private fun handleDaemonInstance(daemon: MullvadDaemon?) { setUpDaemonJob?.cancel() |
