【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>
()) }
}
推荐阅读
- 使用contentResolver将docx转换为Base64会在Android上提供不可读的格式
- 在Mapbox Android中回调locationChanged
- 如何在kotlin android中将pdf文件编码为base64字符串
- 从Kotlin构造函数android中的Parcelable读取List列表
- 如何将加载覆盖进度条覆盖到android的“底部导航视图”(使用约束布局)
- 在浏览器中打开URL,从android上的shell脚本
- 使用adb命令测量Android应用的启动时间
- Android Recyclerview项目Textview在某些项目中不会显示
- Windows 8系统如何容易打开AHCI模式