diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-09-22 09:51:29 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-09-22 09:51:29 -0300 |
| commit | 7f073236b020f2042e89fc6f2e005c2ad89fc464 (patch) | |
| tree | ede9b595a548ca9554184f32685e1135f0db7f33 /android/src | |
| parent | 0ed0091626d560b5a63299f429f22a51c6f23fe2 (diff) | |
| parent | 82561a21c0ccbabbf570649ab40ae9d7422b9610 (diff) | |
| download | mullvadvpn-7f073236b020f2042e89fc6f2e005c2ad89fc464.tar.xz mullvadvpn-7f073236b020f2042e89fc6f2e005c2ad89fc464.zip | |
Merge branch 'improve-how-service-knows-ui-is-visible'
Diffstat (limited to 'android/src')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt | 12 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt | 8 |
2 files changed, 18 insertions, 2 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 df78593cc6..5034d561a1 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/service/MullvadVpnService.kt @@ -77,8 +77,12 @@ class MullvadVpnService : TalpidVpnService() { } } - private var isBound by observable(false) { _, _, isBound -> - notificationManager.lockedToForeground = isBound + private var isBound: Boolean by observable(false) { _, _, isBound -> + notificationManager.lockedToForeground = isUiVisible or isBound + } + + private var isUiVisible: Boolean by observable(false) { _, _, isUiVisible -> + notificationManager.lockedToForeground = isUiVisible or isBound } override fun onCreate() { @@ -160,6 +164,10 @@ class MullvadVpnService : TalpidVpnService() { inner class LocalBinder : Binder() { val serviceNotifier get() = this@MullvadVpnService.serviceNotifier + + var isUiVisible + get() = this@MullvadVpnService.isUiVisible + set(value) { this@MullvadVpnService.isUiVisible = value } } private fun setUp() { 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 8b626eafca..707914c455 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt @@ -27,6 +27,7 @@ class MainActivity : FragmentActivity() { val problemReport = MullvadProblemReport() val serviceNotifier = EventNotifier<ServiceConnection?>(null) + private var isUiVisible = false private var service: MullvadVpnService.LocalBinder? = null private var serviceConnection: ServiceConnection? = null private var shouldConnect = false @@ -39,6 +40,8 @@ class MainActivity : FragmentActivity() { service = localBinder + localBinder.isUiVisible = isUiVisible + localBinder.serviceNotifier.subscribe(this@MainActivity) { service -> android.util.Log.d("mullvad", "UI connection to the service changed: $service") serviceConnection?.onDestroy() @@ -85,6 +88,8 @@ class MainActivity : FragmentActivity() { android.util.Log.d("mullvad", "Starting main activity") super.onStart() + isUiVisible = true + val intent = Intent(this, MullvadVpnService::class.java) if (Build.VERSION.SDK_INT >= 26) { @@ -94,6 +99,7 @@ class MainActivity : FragmentActivity() { } bindService(intent, serviceConnectionManager, 0) + service?.isUiVisible = true } override fun onActivityResult(requestCode: Int, resultCode: Int, resultData: Intent?) { @@ -102,6 +108,8 @@ class MainActivity : FragmentActivity() { override fun onStop() { android.util.Log.d("mullvad", "Stoping main activity") + isUiVisible = false + service?.isUiVisible = false unbindService(serviceConnectionManager) super.onStop() |
