【Android】Dagger和Hilt新手快速入门

这篇具有很好参考价值的文章主要介绍了【Android】Dagger和Hilt新手快速入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

什么是Dagger和Hilt

Dagger和Hilt都是安卓端的依赖注入框架

通过注解生成的方式,来取代手动创建对象的方式,来管理对象和其作用域

Dagger是Square公司出品的,而Hilt是由Google公司在Dagger的基础上优化而来

配置项目级别gradle


	buildscript {
	    repositories {
	        mavenLocal()
	        maven { url 'https://jitpack.io' }
	        maven { url 'https://maven.aliyun.com/repository/google' }
	        maven { url 'https://maven.aliyun.com/repository/central' }
	        maven { url 'https://maven.aliyun.com/repository/releases' }
	        google()
	        mavenCentral()
	    }
	    dependencies {
	        classpath "com.android.tools.build:gradle:4.2.2"
	        classpath 'com.google.dagger:hilt-android-gradle-plugin:2.44'
	    }
	}
	
	task clean(type: Delete) {
	    delete rootProject.buildDir
	}

配置模块级别gradle


	apply plugin: 'com.android.application'
	apply plugin: 'com.google.dagger.hilt.android'
	
	android {
	
	    compileSdkVersion 30
	
	    defaultConfig {
	
	        applicationId "com.android.code"
	
	        minSdkVersion 28
	        targetSdkVersion 30
	
	        versionCode 1
	        versionName "1.1.1"
	
	        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
	    }
	
	    compileOptions {
	        sourceCompatibility JavaVersion.VERSION_1_8
	        targetCompatibility JavaVersion.VERSION_1_8
	    }
	
	    buildFeatures {
	        viewBinding true
	        dataBinding true
	    }
	}
	
	dependencies {
	
	    api 'androidx.appcompat:appcompat:1.2.0'
	    api 'com.google.android.material:material:1.3.0'
	
	    api 'junit:junit:4.13.2'
	    androidTestImplementation 'androidx.test.ext:junit:1.1.2'
	    androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
	
	    //GSON
	    api 'com.google.code.gson:gson:2.8.7'
	
	    //RxJava2
	    api 'io.reactivex.rxjava2:rxjava:2.1.3'
	    api 'io.reactivex.rxjava2:rxandroid:2.0.1'
	
	    //Retrofit2
	    api 'com.squareup.retrofit2:retrofit:2.3.0'
	    api 'com.squareup.retrofit2:converter-gson:2.3.0'
	    api 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
	
	    //Dagger2
	    api 'org.glassfish:javax.annotation:10.0-b28'
	    api "com.google.dagger:dagger:2.47"
	    annotationProcessor "com.google.dagger:dagger-compiler:2.47"
	
	    //Hilt
	    api 'com.google.dagger:hilt-android:2.44'
	    annotationProcessor 'com.google.dagger:hilt-android-compiler:2.44'
	}

Hilt使用方式

由于Hilt是个Dagger基础上优化而来,因此使用方式比较相似

这里我们只讲解Hilt的使用方式,不再讲解Dagger

  • 在Application上添加@HiltAndroidApp注解

  • 在需要注入对象的组件,比如Activity或Fragment上,添加@AndroidEntryPoint注解

  • 在需要注入对象的组件中,通过@Inject注解定义对象

  • 在需要注入对象的默认构造方法上,添加@Inject注解

  • 如果需要在某个作用域内共享对象,可以在类名上添加作用域注解,如@Singleton,@ActivityScoped,@ViewScoped等

  • 如果希望注入对象,在其子组件中重新注入仍然生效,可以通过@Module注解定义一个专门的模块类

  • Module类需要通过@InstallIn指定安装到哪个组件中,Module类还需要提供一个方法,用于生产对象

  • Module类中用于生产对象的方法,需要添加作用域注解,和@Provides注解

  • Module类中,Method上的作用域注解,和InstallIn指定的组件,范围必须对应

Hilt参考代码文章来源地址https://www.toymoban.com/news/detail-652682.html


	public class User extends BaseObservable {
	
	    public String account;
	
	    public String password;
	
	    public String name;
	
	    @Inject
	    public User() {
	
	    }
	
	    @Override
	    public String toString() {
	        return hashCode() + "";
	    }
	}


	@AndroidEntryPoint
	@SuppressWarnings("all")
	public class HomeActivity extends AppCompatActivity {
	
	    @Inject
	    User user1;
	    
	    @Inject
	    User user2;
	}


	@Module
	@InstallIn(ActivityComponent.class)
	public class UserModule {
	
	    @ActivityScoped
	    @Provides
	    public static User injectUser() {
	        return new User();
	    }
	}

到了这里,关于【Android】Dagger和Hilt新手快速入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • android——Hilt 实现依赖项注入

    Hilt 是 Android 的依赖项注入库,可减少在项目中执行手动依赖项注入的样板代码。 Hilt是Google推出的一种依赖注入框架,它能够大大简化Android应用程序的开发过程。使用Hilt可以提供以下优势: Hilt 通过为项目中的每个 Android 类提供容器并自动管理其生命周期 简化依赖注入过程

    2024年02月09日
    浏览(48)
  • Android进阶之光:Dagger2原理简要分析

    这里先给出我的示例代码,github上的demo点这里👈 MainActivity SecondActivity App 注意App类需要在manifest清单文件中声明。 Component类 Module类以及实体类 Dagger2是通过注解生成中间类的方式帮我们注入依赖的,我们就来分析它生成的中间类的代码。 由于注入器是在App类中初始化的,所以

    2024年02月02日
    浏览(89)
  • Toaster - Android 吐司框架,专治 Toast 各种疑难杂症

    https://github.com/getActivity/Toaster 想了解实现原理的可以点击此链接查看:Toaster 源码 如果你的项目 Gradle 配置是在 7.0 以下,需要在 build.gradle 文件中加入 如果你的 Gradle 配置是 7.0 及以上,则需要在 settings.gradle 文件中加入 配置完远程仓库后,在项目 app 模块下的 build.gradle 文件

    2024年02月07日
    浏览(48)
  • 安卓Android开发快速入门

    配合天哥视频食用更佳:【天哥】Android开发视频教程最新版 Android Studio开发 LinearLayout(线性布局) 可嵌套 最常用属性 id 起标记布局的作用 layout_width [wrap_content根据内容选择大小、match_parent匹配父级、具体数值(单位-dp)] layout_height layout_weight 权重,按照权重比例分配父级

    2023年04月16日
    浏览(41)
  • Android快速入门-----用户界面(上)UI组件(1)

    @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ // 提示 Toast.makeText(SimpleComponActivity.this, cd_simple_pingpang.getText().toString(), 0).show(); } } }); cd_simple_foot.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton but

    2024年04月17日
    浏览(49)
  • Android快速入门-----用户界面(上)UI组件(1),附面试答案

    @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ // 提示 Toast.makeText(SimpleComponActivity.this, cd_simple_pingpang.getText().toString(), 0).show(); } } }); cd_simple_foot.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton but

    2024年04月25日
    浏览(47)
  • 5G时代下,Android音视频强势崛起,我们该如何快速入门音视频技术?

    作为Android开发者的我们到底应不应该上音视频这条船? 接下来一起分析下。 大趋势 从未来的大趋势来看,随着5G时代的到来,音视频慢慢变成人们日常生活中的必需品。除了在线教育、音视频会议、即时通讯这些必须使用音视频技术的产品外,其它的产品也需要加入音频、

    2024年04月15日
    浏览(73)
  • docker新手快速入门

    Docker 是现代软件开发和部署的神器,它利用容器化技术使应用的交付和运行变得更加高效。今天,我们将详细介绍如何在 CentOS 7 上安装和配置 Docker,同时将揭开 Docker 背后的工作原理,最后通过一个实例来进行验证安装。 Docker 使用容器来运行应用程序,容器就像是轻量级的

    2024年04月16日
    浏览(33)
  • Git 新手快速入门教程

    1. 何为版本控制 版本控制是一种记录文件变化的系统,可以跟踪文件的修改历史,并允许用户在不同版本之间进行比较、恢复或合并。它主要用于软件开发过程中管理代码的变更,但也可以应用于任何需要跟踪文件变更的场景。 版本控制系统(VCS)可以帮助团队协作开发,

    2024年04月26日
    浏览(56)
  • Android开发-Android开发环境搭建(Android Studio详细安装教程,适合新手)

    01 Android开发工具 Android Studio Android Studio是谷歌推出的一个Android集成开发工具, 基于 IntelliJ IDEA .类似Eclipse ADT, Android Studio提供了集成的Android开发工具用于开发和调试 架构组成 。基于Gradle的构建支持 。Android专属的重构和快速修复 。提示工具以捕获性能、可用性、版本兼容性

    2024年02月09日
    浏览(44)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包