IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【android笔记】koin注入框架简单使用 -> 正文阅读

[移动开发]【android笔记】koin注入框架简单使用

Android依赖注入框架

dagger2/Hilt是我们常用的依赖注入框架,由谷歌公司维护,性能强大,但是也有很多缺点,比如学习成本高,上手慢,代码量大,编译慢等等。Koin就能解决这些问题。

Koin是一款轻量级的依赖注入框架,虽然它性能不及dagger2/Hilt,但是它易上手、易调试、代码少,并且对kotlin和jetpack都有很好的支持。下面就让我们来看看Koin的简单使用。


Koin在Android中的简单使用(kotlin)

(1)添加依赖

dependencies {

    implementation "io.insert-koin:koin-android:$koin_version"

}

(2)创建待注入组件类

创建提供数据的仓库

interface TestRepository {
    fun provideData():String
}

class TestRepositoryImpl():TestRepository{

    override fun provideData(): String="testRepository"

}

创建控制器类来操作仓库的数据

class MyTestPresenter(val repo: TestRepository){
    fun getData()="${repo.provideData()} form $this"
}

(3)创建Koin module(依赖提供方)

使用module来声明待注入的组件

val appModule= module {

    //single表明TestRepository是单例的
    single<TestRepository> { TestRepositoryImpl() }

    /**
     * factory工厂模式,在我们需要时创建一个新的实例
     * get()会自动搜索已经声明的仓库,这里就是TestRepository
     */
    factory { MyTestPresenter(get()) }

}

(4)启动Koin

需要在Application中启动Koin

class MyApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        //开启Koin
        startKoin {
            androidLogger()
            androidContext(this@MyApplication)
            modules(appModule)
        }
    }
}

(5)注入依赖

在程序中需要使用的地方注入依赖,比如Activity, fragment, Service…

class MainActivity : AppCompatActivity() {
	//使用by inject()注入依赖
    val myPresenter:MyTestPresenter by inject()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //..
        
    }
}

Koin配合ViewModel使用

和前面直接使用的流程差不多

(1)添加依赖

dependencies {
    implementation "io.insert-koin:koin-android:$koin_version"
    implementation "io.insert-koin:koin-android-viewmodel:$koin_version"
}

(2)创建待注入ViewModel组件

这里创建提供数据的仓库与前面一致
只不过是使用ViewModel来处理数据

class MainViewModel(val repo:TestRepository):ViewModel(){
    
    fun getData()="${repo.provideData()} form $this"
    
}

(3)创建Koin module

val appModule= module {

    single<TestRepository> { TestRepositoryImpl() }

    viewModel { MainViewModel(get()) } }

}

(4)启动Koin

启动方式不变

(5)注入依赖

val mainViewModel: MainViewModel by viewModel()

需要了解更多内容,请点击访问官网

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:57:05  更:2021-08-06 09:58:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年3日历 -2025/3/14 20:02:01-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码