#yyds干货盘点# JetPack | Hilt-依赖注入框架上手指南

于今腐草无萤火,终古垂杨有暮鸦。这篇文章主要讲述#yyds干货盘点# JetPack | Hilt-依赖注入框架上手指南相关的知识,希望能为你提供帮助。

#yyds干货盘点# JetPack | Hilt-依赖注入框架上手指南

文章图片

Hilt 是Google 最新的依赖注入框架,其是基于Dagger研发,但它不同于Dagger。对于android开发者来说,Hilt可以说专门为Android 打造,提供了一种将Dagger依赖项注入到Android应用程序的标准方法,而且创建了一组标准的组件和作用域,这些组件会自动集成到Android应用程序的各个生命周期中,以简化开发者的上手难度。
相应的一些注解如下:
  • @HiltAndroidApp
    触发Hilt的代码生成,包括适用于应用程序的基类,可以使用依赖注入,应用程序容器是应用程序的父容器,这意味着其他容器可以访问其提供的依赖项。
  • @AndroidEntryPoint
    其会创建一个依赖容器,该容器遵循Android类的生命周期
  • @Inject
    【#yyds干货盘点# JetPack | Hilt-依赖注入框架上手指南】用来注入的字段,其类型不能为Private
    如果要告诉 Hilt如何提供相应类型的实例,需要将@Inject添加到要注入的类的构造函数中。
    Hilt有关如何提供不同类型的实例的信息也称为绑定。
  • @Install(xx)
    Install 用来告诉 Hilt 这个模块会被安装到哪个组件上.
组件(Compenent)
Compenent Injector for
ApplicationComponent Application
ActivityRetainedComponent ViewModel(请参阅JetPack-ViewModel扩展)
ActivityComponent Activity
FragmentComponent Fragment
ViewComponent View
ViewWithFragmentComponent View@WithFragmentBindings
ServiceComponent Service
需要注意的是,Hilt仅支持扩展FragmentActivity(如AppCompatActivity)的活动和扩展Jetpack库的片段Fragment,而不支持FragmentAndroid平台(现已弃用)的 片段 。
组件(Compenent)的生命周期
  • 它限制了在创建组件和生成组件范围绑定的生命周期
  • 它指示合适可以使用成员注入的值。(例如:当@Inject 字段不为null时)
Component 作用范围 Created at Destroyed at
ApplicationComponent @Singleton Application#onCreate() Application#onDestroy()
ActivityRetainedComponent @ActivityRetainedScope Activity#onCreate()1 Activity#onDestroy()1
ActivityComponent @ActivityScoped Activity#onCreate() Activity#onDestroy()
FragmentComponent @FragmentScoped Fragment#onAttach() Fragment#onDestroy()
ViewComponent @ViewScoped View#super() View destroyed
ViewWithFragmentComponent @ViewScoped View#super() View destroyed
ServiceComponent @ServiceScoped Service#onCreate() Service#onDestroy()
例如:
@Singletion class TestCompenent @Inject constructor()

如何使用?先导入依赖
implementation com.google.dagger:hilt-android:2.28-alpha kapt com.google.dagger:hilt-android-compiler:2.28-alpha

classpath com.google.dagger:hilt-android-gradle-plugin:2.28-alpha

相应的model下增加
apply plugin: dagger.hilt.android.plugin

举个

    推荐阅读