kotlin相关专题

Koin注入框架在Kotlin项目中的使用

2019-09-26  本文已影响0人  则卷滔滔

koin注入架构主要的优点就是简洁,上手容易、使用方便,配合kotlin使用更佳,直接进入主题。

1.项目中引入koin依赖

// Koin for Android
implementation "org.koin:koin-android:2.0.1"  
// Koin Android ViewModel features
implementation "org.koin:koin-android-viewmodel:2.0.1" 

/ Koin AndroidX Scope features
implementation "org.koin:koin-androidx-scope:2.0.1"
// Koin AndroidX ViewModel features
implementation "org.koin:koin-androidx-viewmodel:2.0.1"

本文不讲解在viewmodel中的使用

2.创建module

    object MainModule {
        val mainModule = module {
            //单利
            single {
                DbService()
            }
            //指定注入范围
            scope(named<MainActivity>()) {
                scoped {
                    MainPresenter(get(), get())
                }
            }
        }
    }
    class MainPresenter(var context: Context, var dbService: DbService) : BasePresenter {
        fun getData(data: String) {
            Toast.makeText(context, dbService.getData(data), Toast.LENGTH_SHORT).show()
        }
    }

常用有 single: 单利 scope: 范围

3.在Application中初始化

    override fun onCreate() {
        super.onCreate()
        // Start Koin
        startKoin {
            androidLogger()
            androidContext(this@BaseApplication)
            modules(MainModule.mainModule) //需要初始化各个模块的module
        }
    }

4.使用

// lazy inject Koin instance
    val mPresenter : MainPresenter by inject()
    // or
    // eager inject Koin instance
    val mPresenter : MainPresenter get()

    var mPresenter : T? = null

    mPresenter = get()
    //or
    mPresenter = currentScope.get()

参考资料:
https://github.com/InsertKoinIO/koin
https://beta.insert-koin.io/docs/2.0/documentation/reference/index.html

具体实现项目Demo请移步github:https://github.com/liulilei/KotlinKoinDemo
如果对您有帮助,请动动手指点个star,谢谢!
上一篇下一篇

猜你喜欢

热点阅读