简述Hilt的使用

268 阅读2分钟

Hilt的基本操作

用@Inject 对变量进行注解,表示【这个变量要用依赖注入的方式来加载】:

 1. @Inject lateinit var user: User

用@Inject 对依赖的类的构造函数进行注解,表示【当要提供这个类的对象的时候,调用这个函数来创建对象】:

   data class User  constructor(var id: Int, var name:String,var mood :String ){
   @Inject constructor() : this (1,"大力金刚""毫无波澜")
   }

然后,要记得用@AndroidEntryPoint指出要被注入依赖的组件类:

      @AndroidEntryPoint
     class MainActivity : AppCompatActivity(){
     
     
     }
     

以及,用HiltAndroidApp 来宣布你的Application要使用Hilt:

在你的应用类中使用:

          @HiltAndroidApp
   class  HiltApp : Application()
        

作用域(范围内共享数据)

## 添加额外的作用域注解

@ActivityScoped
data class User constructor (var id :Int , var name :String,var mood:String){
  @Inject constructor() :this (1,"大力金刚""毫无波澜")
}

提供更多依赖的方式

类型绑定

    @Module
    @InstallIn(ActivityComponent:: class)
    abstract  class HiltModule {
    @Binds  abstract  fun  bindAny(user : User) :Any
    
    }
    

直接提供代码

        @Provides:
        @Module
        @InstallIn(ActivityComponent::class)
        object  HiltModule2{
        @Provides
        fun  provideUser():User{
             val  user=User()
             user.name ="大力金刚"
             user.mood="信息"
           return  user
        }
        
        }
       

总结

Hilt 有什么用

什么是依赖注入

1)依赖:一个类里面有变量,这些变量就是这个类的依赖,或者说,这个类依赖这些变量。

2)依赖注入:内部依赖的值不由你类自己来提供,而是由外部来交给这个类。

依赖注入有什么用

1)依赖注入的作用:自动加载

2)自动加载的作用:数据共享

3)不共享的数据,需要依赖注入么? 答:多数不需要,有一种例外:多处被使用,并且加载方式一致的,作用是【省事】

Hilt的作用

更方便地使用依赖注入。

延伸话题:

Dagger

Dagger为什么不好用

1).因为它完备和灵活的功能,导致了一些上手成本。----但可以被Hilt解决

2).依赖关系无法追踪。 ---但可以被新版Android Studio解决

Hilt会有Dagger的问题吗?

不会的。但是有前提: 你要用新版Android studio

Dagger、koin和hilt对比

1).易用性:Hilt =koit>Dagger

2).性能:Dagger=Hilt>Koin

3).依赖图的安全性:Dagger=Hilt>Koin

4).依赖关系的追踪:Dagger=Hilt>koin

5).编译时性能:koin>Dagger=Hilt

6).运行时性能:Dagger=Hilt>koin

依赖注入和视图绑定

依赖注入和视图绑定的区别:

1).依赖注入:我要,怎么来的我不管;

2).视图绑定:我要,而且我很明确需要这么这么加载,但我希望你把这件事做了。

有学习笔记,一起成长,关注我,别忘记点个赞哦。