Koin如何注入Android活动/ appcompatactivity之外

【Koin如何注入Android活动/ appcompatactivity之外】幽沉谢世事,俯默窥唐虞。这篇文章主要讲述Koin如何注入Android活动/ appcompatactivity之外相关的知识,希望能为你提供帮助。
Koin是一个新的,轻量级的DI库,可用于android以及独立的kotlin应用程序。
通常你注入这样的依赖:

class SplashScreenActivity : Activity() {val sampleClass : SampleClass by inject()override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) } }

inject()方法。
但是如果在活动上下文不可用的地方(例如活动之外)注入东西呢?
答案有KoinComponent来救援。在任何课程中你都可以简单地:
class SampleClass : KoinComponent {val a : A? by inject() val b : B? by inject() }

扩展KoinComponent可以访问inject()方法。
请记住,通常以通常的方式注入东西就足够了:
class SampleClass(val a : A?, val b: B?)

另一答案Koin使用KoinComponent界面为此提供了解决方案。例如,如果需要在存储库中获取某些依赖项,则可以简单地实现KoinComponent接口。它使您可以访问各种Koin功能,如get()inject()。仅当您无法重写构造函数以接受依赖项作为构造函数参数时,才使用KoinComponent。
class MyRepository: Repository(), KoinComponent { private val myService by inject< MyService> () }

构造函数注入比这种方法更好。
例如,同样的事情可以通过以下方式实现:
class MyRepository(private val service: MyService): Repository() { ... }

您可以在koin模块中添加用于实例化此类的定义:
val serviceModule = module { ...factory { MyService() } } val repositoryModule = module { ...factory { MyRepository(get< MyService> ()) } }


    推荐阅读