Android Koin2基本使用的那件事儿

  


  

  

适用于芬兰湾的科特林开发人员的实用轻量级依赖注入框架。
  

  

用纯芬兰湾的科特林编写,仅使用功能分辨率:无代理,无代码生成,无反射。
  

  

PS: KOIN支持Kotion和Java
  

  


  

  

本文主要讲解Koin(2.0.1)在AndroidX中的使用,所以直接添加koin-android依赖
  

  

首先添加Koin Android基本依赖

     //Koin Android   实现“org.koin: koin-android: koin_version美元”      

如果需要使用到范围(范围)控制,则依赖,koin-androidx-scope

     //Koin AndroidX范围特性   实现“org.koin: koin-androidx-scope: koin_version美元”      

如果项目中使用到ViewModel,那么毫不犹豫依赖koin-androidx-viewmodel

     //Koin AndroidX ViewModel功能   实现“org.koin: koin-androidx-viewmodel: koin_version美元”      

既然使用芬兰湾的科特林,扩展功能怎么能少呢?添加koin-androidx-ext

     //Koin AndroidX实验功能   实现“org.koin: koin-androidx-ext: koin_version美元”      


  

  

Koin入门使用相当容易,学会下面几个关键词就好了,跟着来看看哦~
  

  工厂

<强>
  

  

今天活动需要一个女孩(嗯~,可能是几个),那我们就创建个依赖对象使用Koin注入给它,这时我需要每次都给它个新的(使用工厂):
  

        val girlModule={模块   工厂{   女孩()   }   }      

依赖对象有了,我得让Koin知道,所以需要在我们的应用初始化:
  

        覆盖乐趣>//注释掉的是另一种写法   类Simple1Activity: AppCompatActivity () {      私人val女孩inject ()//私有lateinit var女孩:女孩      覆盖有趣alt=" Android Koin2基本使用的那件事儿">

  

看脸都是一个人啊!怎么知道每次都是个新女孩呢?直接检查女孩的身份证:

  
  

系统。:- - - - -在com.joker.koin.model。Girl@a5b751b
  系统。:- - - - -在com.joker.koin.model。Girl@727e094
  系统。:- - - - -在com.joker.koin.model.Girl@e005b30

     

K,原来是3胞胎……
  

  

<强>单
  

  

现在都什么时代了,不能给它享受多个女孩啊,那就把工厂换成单身,动手试试检查女孩证件:
  

        val girlModule={模块   单{   女孩()   }   }      
  

系统。:- - - - -在com.joker.koin.model。Girl@48146b8
  系统。:- - - - -在com.joker.koin.model。Girl@48146b8
  系统。:- - - - -在com.joker.koin.model.Girl@48146b8

     

如此简单的我们就实现了单例。什么?同时要2个女孩,还要不同类型且要是固定的。没问题我们有限定符和定义
  

        val girlModule={模块   单(名为(“girl1”)){(类型:字符串)→   女孩()。应用{   这一点。类型=类型   }   }      单(名为(“girl2”)){(类型:字符串)→   女孩()。应用{   这一点。类型=类型   }   }   }      

看看活动怎么样了:
  

        类Simple2Activity: AppCompatActivity () {      私人val girl1 inject(命名(“girl1”)){尺寸(“可爱")}   私人val girl2 inject(命名(“girl2”)){尺寸(“性”感)}      覆盖有趣alt=" Android Koin2基本使用的那件事儿">

  

<强>范围
  

  

范围是个什么东西呢?我理解是使用范围,类似于生命周期,我们可以控制它的存活范围。
  

  

来个其他的栗子换个口味,先奉上效果图:

  

 Android Koin2基本使用的那件事儿

        val girlModule={模块   范围(命名(“范围”)){   作用域{   ScopeEntity ()   }   }   }      

范围必须得指定预选赛,创建了范围依赖。接下来就是createScope和bindScope,在这里设置了默认值,“Scope1Activity”:
  

        类Scope1Activity: AppCompatActivity () {      覆盖乐趣>   类Scope2Activity: AppCompatActivity () {      覆盖乐趣>   覆盖有趣onActivityResult (requestCode: Int, resultCode: Int数据:意图# 63;){   超级。onActivityResult (requestCode resultCode,数据)//验证范围销毁延时是为了保证Scope1Activity已经执行onDestory   scope.postDelayed ({   范围。文本={试   getKoin () .getScope (scope1) .get

Android Koin2基本使用的那件事儿