Kotlin与dagger2

来源:互联网 发布:js json数组 某一个key 编辑:程序博客网 时间:2024/06/16 22:33

dagger2是用于Android的依赖注入框架

这篇文章只是简单讲述了kotlin怎么用dagger2,我不会详细的说明dagger2

首先是在你的gradle里配置dagger2

//加入daggercompile 'com.google.dagger:dagger:2.5'//compile 'com.google.dagger:dagger-compiler:2.5'kapt 'com.google.dagger:dagger-compiler:2.5'

然后是你的module类

@Moduleclass MainModule (val mView: IMainView){    @ActivityScope    @Provides    fun provideView(): IMainView = mView    @ActivityScope    @Provides    fun provideModle(requestQueue: RequestQueue, volleyRequest: VolleyRequest): IMainModel            = MainActivityModel(requestQueue, volleyRequest)    @ActivityScope    @Provides    fun providePersent(view: IMainView, model: IMainModel): IMainPersenter            = MainPresenter(model, view)}

接着是你的注入器

@ActivityScope@Component(modules = arrayOf(MainModule::class), dependencies = arrayOf(AppComponent::class))interface MainComponent{    fun inject(activity: MainActivity)}
实现依赖注入

class MainActivity : AppCompatActivity(), IMainView {    @Inject    lateinit var persenter: IMainPersenter    public override fun onCreate(saveInstanceBundle: Bundle?) {        super.onCreate(saveInstanceBundle)        setContentView(R.layout.activity_main)        initMvp()    }    private fun initMvp(){        DaggerMainComponent                .builder()                .mainModule(MainModule(this))                .appComponent(HelpUtils.getInstance().appComponent)                .build().inject(this)    }}
因为kotlin中的变量都需要初始化一个值,或者你需要使用委托方式进行稍后初始化,但是dagger2不支持委托方式,所以需要用关键子latinit表示这个变量将在稍后初始话。这样就可以进行注入了

原创粉丝点击