Skip to content

Instantly share code, notes, and snippets.

View arnaudgiuliani's full-sized avatar

Arnaud Giuliani arnaudgiuliani

View GitHub Profile
module {
viewModel { MyViewModel() }
}
class MyActivity : AppCompatActivity() {
val myViewModel : MyViewModel by viewModel()
}
class MyActivity : AppCompatActivity, AndroidScopeComponent {
// get current Activity's scope
override val scope : Scope by activityScope()
// MyPresenter is resolved from MyActivity's scope
val presenter : MyPresenter by inject()
}
module {
// Declare a scope for MyActivity
scope<MyActivity> {
scoped { MyPresenter() }
}
}
class MyActivity : ScopeActivity() {
val presenter : MyPresenter by inject()
}
module {
factory { MyPresenter() }
}
class MyActivity : AppCompatActivity() {
val presenter : MyPresenter by inject()
}
class MyActivity : AppCompatActivity() {
val presenter = MyPresenter()
}
// Implementing our own Scope delegation
class MVPActivity : AppCompatActivity(R.layout.mvp_activity), KoinScopeComponent {
// Create Activity scope (backed by ViewModel)
override val scope: Scope by lazy { activityScope() }
// Inject presenter with org.koin.core.scope.inject extension
// also can use directly the scope: scope.inject<>()
val presenter: ScopedPresenter by inject()
}
class MyTest : KoinTest {
// Use Mockk as Mock provider
@get:Rule
val mockProvider = MockProviderRule.create { clazz ->
mockkClass(clazz, relaxed = true)
}
// JUnit5 style
@JvmField
// Implementing our own Scope delegation
class MVPActivity : AppCompatActivity(R.layout.mvp_activity), KoinScopeComponent {
// Create scope
override val scope: Scope by lazy { newScope() }
// Inject presenter with org.koin.core.scope.inject extension
// also can use directly the scope: scope.inject<>()
val presenter: ScopedPresenter by inject()
@arnaudgiuliani
arnaudgiuliani / koin_2.2_scope_activity.kt
Last active October 12, 2020 16:37
Koin 2.2 - Scoped Activity
val mvpModule = module {
// Describe a scope for MVPActivity
scope<MVPActivity> {
scoped { ScopedPresenter(get()) } // Inject MVPActivity with get()
}
}
// Using ScopeActivity
class MVPActivity : ScopeActivity(R.layout.mvp_activity) {
// give a Worker
class SimpleWorker(
private val simpleWorkerService: SimpleWorkerService,
appContext: Context,
private val params: WorkerParameters
) : CoroutineWorker(appContext, params) {
override suspend fun doWork(): Result { ... }
}