前言:

一、Android Hilt依赖注入框架的引入步骤如下:

1.引入Hilt,在App的Build.gradle目录下添加hilt插件和依赖:

plugins {id 'com.android.application'id 'kotlin-android'id 'kotlin-kapt'id 'dagger.hilt.android.plugin'
}

  //Dagger - Hiltimplementation "com.google.dagger:hilt-android:2.30"kapt "com.google.dagger:hilt-android-compiler:2.30"implementation "androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03"kapt "androidx.hilt:hilt-compiler:1.0.0"// Activity KTX for viewModels()implementation "androidx.activity:activity-ktx:1.3.1"

2.在项目的build.gradle目录下添加hilt的插件依赖:

buildscript {ext.kotlin_version = "1.5.21"repositories {google()jcenter()}dependencies {classpath "com.android.tools.build:gradle:4.1.1"classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"classpath "com.google.dagger:hilt-android-gradle-plugin:2.28.3-alpha"// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
}

3.在项目中使用Java8

  compileOptions {sourceCompatibility JavaVersion.VERSION_1_8targetCompatibility JavaVersion.VERSION_1_8}kotlinOptions {jvmTarget = '1.8'}

二、Hilt的简单使用

1.创建App类,继承于Application

 @HiltAndroidApp
class App :Application(){}

2.在Manifast中注册Application

<applicationandroid:name=".app.App"android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/Theme.AndroidDeviceIdDemo"><activity android:name=".MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity>
</application>

3.将依赖注入到MainActivity类

注:在 Application 类中设置了 Hilt 且有了应用级组件后,Hilt 可以为带有 @AndroidEntryPoint 注释的其他 Android 类提供依赖项

Hilt 目前支持以下 Android 类:
Application(通过使用 @HiltAndroidApp)
Activity
Fragment
View
Service
BroadcastReceiver

4.创建注入类:

@Module
@InstallIn(ActivityComponent::class)
object MainModule {@ActivityScoped@Provides@Named("String2")fun provideTestString2(@ApplicationContext context: Context,@Named("String1") testString1: String) = "${context.getString(R.string.string_to_inject)} - $testString1"
}

@Module
@InstallIn(ApplicationComponent::class)
object AppModule {@Singleton@Provides@Named("String1")fun provideTestString1() = "This is a string we will inject"
}

class TestViewModel @ViewModelInject constructor(@Named("String2") testString2: String):ViewModel(){init {Log.d("ViewModel", "Test String from ViewModel: $testString2")}
}

5.把创建好的测试类注入到MainActivity中:

@Inject
@Named("String1")
lateinit var testString: String
private val viewModel: TestViewModel by viewModels()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activity_main)Log.d("MainActivity", "Test String from MainActivity: $testString")viewModel
}

6.运行结果如下:

7.完整的demo地址:

hint的简单使用

8.参考资料:

hint参考资料

Android中Hilt的简单使用相关推荐

  1. Android中socket通信简单实现

    Android中socket通信简单实现 socket通信需要有一个服务器和客户端,可以把同一个APP作为服务器跟客户端,也可以分开成两个APP. 先上个图: 这里以一个APP作为服务器跟客户端为示例 ...

  2. android中PAG的简单使用

    (入门篇)android中PAG的简单使用 一.pag是什么? 示例:pag官网 二.使用步骤 1.引入库 代码如下(示例):在app文件夹下的build.gradle文件中,添加下面这条依赖,添加到 ...

  3. android 张口逐帧动画,Android中实现一个简单的逐帧动画(附代码下载)

    场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 实现 首先准备一组不同表情的照片,放在res/drawable下,然后在此目录下新建动画资源文件fairy.xml 这 ...

  4. Android中实现一个简单的逐帧动画(附代码下载)

    场景 Android中的逐帧动画,就是由连续的一张张照片组成的动画. 效果 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 ...

  5. Android中CardView的简单使用

    Android 5.0的一个新增加的控件CardView. 环境配置 在Android Studio中进行使用,我们需要只需要在Gradle中添加CardView包的依赖即可进行使用. [html]  ...

  6. Android多媒体学习一:Android中Image的简单实例。

    在多媒体应用中,Image是最基础的功能模块,接下来我们将看看在Android中是如何获取和存储Image的.Android内嵌的Image获取和存储功能,可以让我们对于整个媒体框架有个比较全面的了解 ...

  7. android surface编程,Android中SurfaceView用法简单实例

    本文实例讲述了Android中SurfaceView用法.分享给大家供大家参考,具体如下: 这里贴上一个小程序代码,主要运用SurfaceView来实现在屏幕上画一个圆,你可以通过按方向键和触摸屏幕来 ...

  8. Android中Intent.setAction简单使用

    1首先大家需要在主界面中拖入一个按钮, 上代码 <?xml version="1.0" encoding="utf-8"?> <LinearL ...

  9. Android中实现一个简单的照相功能

    一个简单的照相功能,拍照之后在另一个activit中显示出拍照的图片. 首先是布局文件: <?xml version="1.0" encoding="utf-8&q ...

最新文章

  1. 再造一个爱因斯坦?GPT-3 让我看到了名人“重生”的希望
  2. SQL中的sysobjects与syscolumns
  3. 浙工大计算机类包含哪些专业,浙江工业大学计算机类专业培养计划
  4. 神经网络中的反向传播算法
  5. Cloud一分钟 | Gartner发布2018年第二季度全球服务器市场报告;中信银行联合腾讯云推出手机银行智能语音产品...
  6. 结合PE格式对linker分析1
  7. 在电脑上安装python-在电脑上安装python的方法
  8. ios 性能优化之图形性能测试
  9. 4:JAVA UUID 生成
  10. 基于linux的安全通讯过程
  11. nodejs,webpack安装以及初步运用
  12. 【图形学实验】Loop Subdivision与Modified Butterfly Subdivision
  13. 用户运营:如何用B端运营思维做用户增长?
  14. 拖拽插件jquery.dad.js
  15. 2023年报考CSM敏捷教练认证好不好?含金量高吗?
  16. Linux 系统USB设备检测
  17. HTML 使用table标签制作个人简历
  18. 老路《用得上的商学课》学习笔记(6-10课)
  19. 精通Web Analytics 2.0 (10) 第八章:竞争情报分析
  20. 【book 120】My Brief History By Stephen Hawking

热门文章

  1. 【洛谷】P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布(详细代码)
  2. 微信公众号图灵机器人开发php,使用图灵api创建微信聊天机器人
  3. 电脑控制android 源代码,[源代码]电脑通过adb控制安卓手机
  4. 单片机原理与应用实验——定时器(C语言),用定时器设计延时函数,并实现流水灯的功能
  5. 全球及中国抗体药物市场展望规划及专项深度调研报告2021-2027年
  6. python 删除pdf页面_删除PDF其中几页的方法
  7. 我为什么花 1 万多买 MacBook Pro,重点是推荐我常用的开发写作相关的工具
  8. idea使用谷歌翻译
  9. 常见五轴机床的机械结构形式讲解!
  10. 【突发】Telsa致命车祸细节报告:人为设定超速15%(下载)