summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-05-20 14:27:53 +0200
committerAlbin <albin@mullvad.net>2022-05-20 14:38:07 +0200
commitb7e287b9a472b3f996bec6f8ca187a8e8b3d8dad (patch)
treea25ccf7d8e21730784050511747ec87d3b621954 /android/app/src
parent1080dabd122d9a67f5ef5260c7731639a0535646 (diff)
downloadmullvadvpn-b7e287b9a472b3f996bec6f8ca187a8e8b3d8dad.tar.xz
mullvadvpn-b7e287b9a472b3f996bec6f8ca187a8e8b3d8dad.zip
Avoid loading the UI DI module in all processes
Loads the UI specific DI module only in the process/activity where it's used. Before, the UI module and its dependencies would be loaded in the service and tile processes as well.
Diffstat (limited to 'android/app/src')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt11
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt12
2 files changed, 15 insertions, 8 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt
index 0c3a0d8640..ae00e9e16d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/MullvadApplication.kt
@@ -1,20 +1,19 @@
package net.mullvad.mullvadvpn
import android.app.Application
-import net.mullvad.mullvadvpn.di.appModule
import org.koin.android.ext.koin.androidContext
import org.koin.core.context.startKoin
+/**
+ * In Android, separate instances of the application class (MullvadApplication) will be instantiated
+ * for each process. That also means that a only common logic should be placed here.
+ */
class MullvadApplication : Application() {
-
override fun onCreate() {
super.onCreate()
- // start Koin!
+ // Used to create/start separate DI graphs for each process. Avoid non-common classes etc.
startKoin {
- // declare used Android context
androidContext(this@MullvadApplication)
- // declare modules
- modules(appModule)
}
}
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
index bda1055c76..16673ea65d 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
@@ -10,6 +10,7 @@ import android.net.VpnService
import android.os.Bundle
import android.os.IBinder
import android.os.Messenger
+import android.util.Log
import android.view.WindowManager
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
@@ -18,11 +19,15 @@ import kotlin.properties.Delegates.observable
import net.mullvad.mullvadvpn.BuildConfig
import net.mullvad.mullvadvpn.R
import net.mullvad.mullvadvpn.dataproxy.MullvadProblemReport
+import net.mullvad.mullvadvpn.di.uiModule
import net.mullvad.mullvadvpn.service.MullvadVpnService
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnection
import net.mullvad.talpid.util.EventNotifier
+import org.koin.core.context.loadKoinModules
+import org.koin.core.context.unloadKoinModules
open class MainActivity : FragmentActivity() {
+
val problemReport = MullvadProblemReport()
val serviceNotifier = EventNotifier<ServiceConnection?>(null)
@@ -64,6 +69,8 @@ open class MainActivity : FragmentActivity() {
var backButtonHandler: (() -> Boolean)? = null
override fun onCreate(savedInstanceState: Bundle?) {
+ loadKoinModules(uiModule)
+
requestedOrientation = if (deviceIsTv) {
ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE
} else {
@@ -85,7 +92,7 @@ open class MainActivity : FragmentActivity() {
}
override fun onStart() {
- android.util.Log.d("mullvad", "Starting main activity")
+ Log.d("mullvad", "Starting main activity")
super.onStart()
val intent = Intent(this, MullvadVpnService::class.java)
@@ -107,8 +114,9 @@ open class MainActivity : FragmentActivity() {
}
override fun onStop() {
- android.util.Log.d("mullvad", "Stoping main activity")
+ Log.d("mullvad", "Stoping main activity")
unbindService(serviceConnectionManager)
+ unloadKoinModules(uiModule)
super.onStop()