android——Hilt 实现依赖项注入

这篇具有很好参考价值的文章主要介绍了android——Hilt 实现依赖项注入。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

Hilt 是 Android 的依赖项注入库,可减少在项目中执行手动依赖项注入的样板代码。

Hilt是Google推出的一种依赖注入框架,它能够大大简化Android应用程序的开发过程。使用Hilt可以提供以下优势:

  1. Hilt 通过为项目中的每个 Android 类提供容器并自动管理其生命周期
  2. 简化依赖注入过程。使用Hilt可以将大量冗杂的依赖注入代码转移到注解中,从而使得代码更加简洁易懂。

  3. 易于测试。使用Hilt可以更容易地进行单元测试和集成测试,从而提高应用程序的质量和稳定性。

  4. 提高可维护性。Hilt使用标准注解和标准分层架构,这意味着应用程序的代码结构更加清晰和易于维护。

  5. 支持多种依赖注入场景。Hilt支持Android中的多种依赖注入场景,包括Activity、Fragment、View等。

为什么要使用:

拿MVVM框架来说,Activity/Fragment 依赖于 ViewModel,而 ViewModel 依赖于 Repository。在安卓的 MVVM架构里,依赖注入的意思就是把 ViewModel 的实例(instance)注入到 Activity/Fragment 类中,同样的道理,Repository 的实例注入到 ViewModel 类中。以此类推,Model 和 RemoteDataSource 的实例也需要注入到 Repository 类中。

实际上,我们通常做的,就是在 Activity/Fragment 里面直接 new 一个 ViewModel。看起来很方便,但实际上,这是不是和上面的耦合例子非常类似?如果我们只有一个 Activity/Fragment 和一个依赖的 ViewModel,那没什么问题,但如果关系复杂了,依赖注入的优势就很明显了。
 

添加依赖项

首先,将 hilt-android-gradle-plugin 插件添加到项目的根级 build.gradle 文件中:

plugins {
  ...
  id("com.google.dagger.hilt.android") version "2.44" apply false
}

然后,应用 Gradle 插件并在 app/build.gradle 文件中添加以下依赖项:

plugins {
  id("kotlin-kapt")
  id("com.google.dagger.hilt.android")
}

android {
  ...
}

dependencies {
  implementation("com.google.dagger:hilt-android:2.44")
  kapt("com.google.dagger:hilt-android-compiler:2.44")
}

// Allow references to generated code
kapt {
  correctErrorTypes = true
}

Hilt 应用类

@HiltAndroidApp
class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        // ...
    }
}
@Singleton
class MyDependency @Inject constructor() {

    fun say(){
        Log.e("TAG","输出内容-》")
    }
}
@AndroidEntryPoint
class MainActivity : AppCompatActivity() {
    @Inject
    lateinit var myDependency: MyDependency

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        myDependency.say() // 因为MyDependency类使用了依赖注入,所有不需要进行实例就能调用say方法
    }
}

谷歌文档:使用 Hilt 实现依赖项注入  |  Android 开发者  |  Android Developers (google.cn)

demo下载地址:https://download.csdn.net/download/wy313622821/87905521

总之,使用Hilt能够提高Android应用程序的开发效率、可维护性和代码质量,是一种非常值得尝试的技术。文章来源地址https://www.toymoban.com/news/detail-494276.html

到了这里,关于android——Hilt 实现依赖项注入的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Android Gradle 插件】Android 依赖管理 ④ ( 常用依赖配置分析 | implementation 依赖作用 | api 依赖作用 | compileOnly 依赖作用 )

    在本篇博客中逐一分析以下依赖配置 : implementation api compileOnly runtimeOnly annotationProcessor lintChecks lintPublish apk ( 已废弃 ) compile ( 已废弃 ) provided ( 已废弃 ) Android 依赖参考文档 : https://developer.android.google.cn/studio/build/dependencies compile 依赖作用: 编译打包 : 为 自己的项目模块 添加依

    2024年02月02日
    浏览(50)
  • go 语言实现依赖注入

    依赖注入和控制反转恰恰相反,它是一种具体的编码技巧。我们不通过 new 的方式在类内部创建依赖类的对象,而是将依赖的类对象在外部创建好之后,通过构造函数、函数参数等方式传递(或注入)给类来使用。 DI(依赖性注入)是一种技术,当你的模块间接地接受依赖性

    2024年01月17日
    浏览(55)
  • 【Android Gradle 插件】Android 依赖管理 ① ( 依赖库匹配 | 依赖库查找顺序及路径 | Gradle 资源库 )

    依赖库匹配 :  依赖库由三部分组成 依赖库分组 依赖库名称 依赖库版本号 只有三者都对上 , 依赖库才能匹配上 , 如 依赖库分组为 androidx.appcompat ,  依赖库名称为 appcompat ,  依赖库版本号为 1.3.1 ,  三者由冒号隔开 ; Android 依赖库查找路径 : 首先 , 查找 本地的 Gradle 缓存依赖

    2024年01月17日
    浏览(105)
  • C#通过反射方法实现依赖注入

            看了很多依赖注入的插件,有时候一直在想,是不是都需要定义一个容器来绑定依赖注入的动态库,难道就不能按需注入?我这里的诉求其实很简单,希望注入的实体,在项目中没有任何一个地方是需要强引用的。         这里以切换关系数据库为例子。我在

    2024年02月09日
    浏览(36)
  • 使用 Spring 实现控制反转和依赖注入

    在本文中,我们将介绍 IoC (控制反转)和 DI (依赖注入)的概念,以及如何在 Spring 框架中实现它们。 控制反转是软件工程中的一个原则,它将对象或程序的某些部分的控制权转移给容器或框架。我们最常在面向对象编程的上下文中使用它。 与传统编程相比,传统编程中我

    2024年02月13日
    浏览(35)
  • Spring高手之路——深入理解与实现IOC依赖查找与依赖注入

    本文从 xml 开始讲解,注解后面给出   首先,我们需要明白什么是 IOC (控制反转)和依赖查找。在 Spring Framework 中,控制反转是一种设计模式,可以帮助我们解耦模块间的关系,这样我们就可以把注意力更多地集中在核心的业务逻辑上,而不是在对象的创建和管理上。  

    2024年02月06日
    浏览(57)
  • Spring高手之路1——深入理解与实现IOC依赖查找与依赖注入

    本文从 xml 开始讲解,注解后面给出   首先,我们需要明白什么是 IOC (控制反转)和依赖查找。在 Spring Framework 中,控制反转是一种设计模式,可以帮助我们解耦模块间的关系,这样我们就可以把注意力更多地集中在核心的业务逻辑上,而不是在对象的创建和管理上。  

    2024年02月09日
    浏览(58)
  • .Net Framework使用Autofac实现依赖注入

    最近也是找了快2周的工作了,收到的面试邀请也就几个,然后有个面试题目是用asp.net mvc + Entityframework 做一个学生信息增删改查系统。因为题目要求了用Entityframework 也就是EF 那也就不上core了,web项目也是用Framework 4.8去做的。 本文的重点是IOC容器,在Framework 中是没有自带的

    2024年02月09日
    浏览(44)
  • 如何查看Android 包依赖关系&gradle依赖管理

    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 我们继续总结学习,温故知新。 本文讲述如何查看 android 依赖库关系。 Tasks-help-dependencies 可以看项

    2024年01月18日
    浏览(57)
  • 如何查看Android 包依赖关系

    关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。 我们继续总结学习,温故知新。 本文讲述如何查看 android 依赖库关系。 Tasks-help-dependencies 可以看项

    2024年02月05日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包