summaryrefslogtreecommitdiffhomepage
path: root/android/app/src
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-05-23 11:47:28 +0200
committerAlbin <albin@mullvad.net>2022-05-23 11:47:28 +0200
commitc78fc6428876733d98d967659aabf1a345d4add0 (patch)
treef8d4cef1fe2e6a261597802abf845cf0ad67cf5f /android/app/src
parent9d2ceab94ce1e67140bfc4e34bf5ca9d980304d5 (diff)
parent2e342f90bbdec43b56e9ea3a21d04716edbb4352 (diff)
downloadmullvadvpn-c78fc6428876733d98d967659aabf1a345d4add0.tar.xz
mullvadvpn-c78fc6428876733d98d967659aabf1a345d4add0.zip
Merge branch 'fix-android-di-graphs'
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/di/UiModule.kt (renamed from android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt)2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt12
-rw-r--r--android/app/src/test/kotlin/net/mullvad/mullvadvpn/di/UiModuleTest.kt (renamed from android/app/src/test/kotlin/net/mullvad/mullvadvpn/di/AppModuleTest.kt)4
4 files changed, 18 insertions, 11 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/di/AppModule.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
index 5d576f0f0c..17cfd3c922 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
@@ -14,7 +14,7 @@ import org.koin.core.qualifier.named
import org.koin.dsl.module
import org.koin.dsl.onClose
-val appModule = module {
+val uiModule = module {
single<PackageManager> { androidContext().packageManager }
single<String>(named(SELF_PACKAGE_NAME)) { androidContext().packageName }
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()
diff --git a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/di/AppModuleTest.kt b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/di/UiModuleTest.kt
index c30a63fedf..92ffd792a0 100644
--- a/android/app/src/test/kotlin/net/mullvad/mullvadvpn/di/AppModuleTest.kt
+++ b/android/app/src/test/kotlin/net/mullvad/mullvadvpn/di/UiModuleTest.kt
@@ -16,11 +16,11 @@ import org.koin.core.scope.Scope
import org.koin.test.KoinTest
import org.koin.test.KoinTestRule
-class AppModuleTest : KoinTest {
+class UiModuleTest : KoinTest {
@get:Rule
val koinTestRule = KoinTestRule.create {
- modules(appModule)
+ modules(uiModule)
}
@After