From b6a6538cd96bad2fc703eec8713de3cf034094f6 Mon Sep 17 00:00:00 2001 From: lihenggui Date: Mon, 21 Oct 2024 11:56:45 -0700 Subject: [PATCH] Inject dependencies in the app module --- .../com/google/samples/apps/nowinandroid/MainActivity.kt | 2 +- .../com/google/samples/apps/nowinandroid/NiaApplication.kt | 7 ++++++- .../google/samples/apps/nowinandroid/di/JankStatsModule.kt | 6 ++++++ .../apps/nowinandroid/util/ProfileVerifierLogger.kt | 1 - 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/MainActivity.kt b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/MainActivity.kt index dc660aa77..242ef5104 100644 --- a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/MainActivity.kt +++ b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/MainActivity.kt @@ -68,7 +68,7 @@ class MainActivity : ComponentActivity() { private val userNewsResourceRepository: UserNewsResourceRepository by inject() - private val viewModel: MainScreenViewModel by viewModels() + private val viewModel: MainScreenViewModel by inject() override fun onCreate(savedInstanceState: Bundle?) { val splashScreen = installSplashScreen() diff --git a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/NiaApplication.kt b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/NiaApplication.kt index fa3e2d6d1..c11ce4c9c 100644 --- a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/NiaApplication.kt +++ b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/NiaApplication.kt @@ -21,12 +21,14 @@ import coil3.ImageLoader import coil3.PlatformContext import coil3.SingletonImageLoader import coil3.request.crossfade +import com.google.samples.apps.nowinandroid.di.JankStatsModule import com.google.samples.apps.nowinandroid.di.appModules import com.google.samples.apps.nowinandroid.util.ProfileVerifierLogger import org.koin.android.ext.android.inject import org.koin.android.ext.koin.androidContext import org.koin.android.ext.koin.androidLogger import org.koin.core.context.startKoin +import org.koin.ksp.generated.module /** * [Application] class for NiA @@ -40,7 +42,10 @@ class NiaApplication : Application(), SingletonImageLoader.Factory { startKoin { androidLogger() androidContext(this@NiaApplication) - modules(appModules) + modules( + JankStatsModule().module, + appModules, + ) } // Initialize Sync; the system responsible for keeping data in the app up to date. // Sync.initialize(context = this) diff --git a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/di/JankStatsModule.kt b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/di/JankStatsModule.kt index c4c4786ca..8cf915047 100644 --- a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/di/JankStatsModule.kt +++ b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/di/JankStatsModule.kt @@ -21,6 +21,8 @@ import android.util.Log import android.view.Window import androidx.metrics.performance.JankStats import androidx.metrics.performance.JankStats.OnFrameListener +import com.google.samples.apps.nowinandroid.util.ProfileVerifierLogger +import kotlinx.coroutines.CoroutineScope import org.koin.core.annotation.Factory import org.koin.core.annotation.Module import org.koin.core.annotation.Single @@ -44,4 +46,8 @@ class JankStatsModule { window: Window, frameListener: OnFrameListener, ): JankStats = JankStats.createAndTrack(window, frameListener) + + @Single + fun provideProfileVerifierLogger(scope: CoroutineScope): ProfileVerifierLogger = + ProfileVerifierLogger(scope) } diff --git a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/util/ProfileVerifierLogger.kt b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/util/ProfileVerifierLogger.kt index b27948b55..6afb35a04 100644 --- a/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/util/ProfileVerifierLogger.kt +++ b/app/src/androidMain/kotlin/com/google/samples/apps/nowinandroid/util/ProfileVerifierLogger.kt @@ -48,7 +48,6 @@ import org.koin.core.annotation.Single * * @see androidx.profileinstaller.ProfileVerifier.CompilationStatus.ResultCode */ -@Single class ProfileVerifierLogger( @ApplicationScope private val scope: CoroutineScope, ) {