为什么我可以使用 Application 作为 ViewModelComponent 和 Hilt 中的默认绑定?

2024-06-08

来自article https://developer.android.com/training/dependency-injection/hilt-android#component-default,我知道每个 Hilt 组件都带有一组默认绑定,Hilt 可以将它们作为依赖项注入。你可以看到图像A。

And the ViewModelComponent只有一个默认绑定SavedStateHandle根据上面的文章。

为什么我能够使用Application作为默认绑定ViewModelComponent与代码 A 中的希尔特?

@HiltViewModel
class PlaySoundViewModel @Inject constructor(
   private val appContext: Application,         // It's Ok, I have tested.
   private val playSound: IPlaySound,
   private val savedStateHandle: SavedStateHandle
): ViewModel(){
   ...
}

Image A


根据此图(https://developer.android.com/training/dependency-injection/hilt-android#component-hierarchy https://developer.android.com/training/dependency-injection/hilt-android#component-hierarchy) ,我们可以访问父组件的绑定,正如您所提到的SingletonComponent have Application作为默认绑定,ViewModel能够访问Application

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我可以使用 Application 作为 ViewModelComponent 和 Hilt 中的默认绑定? 的相关文章

随机推荐

  • 使用流分析将自定义事件维度从 Application Insights 导出到 SQL

    我正在按照示例演练进行操作使用流分析从 Application Insights 导出到 SQL https azure microsoft com en us documentation articles app insights cod
  • VBA改变复杂的公式

    我使用带有单选按钮的代码 请参阅最后一个代码 将新行插入到第 15 行 这会将旧数据向下推 同时将相同的公式复制到之前曾经存在过的第 15 行 在第 15 行中 单击该按钮 单击该按钮后 我可以在 E15 中输入 3 位数据 然后按 Ent
  • 代码分析器:PMD 和 FindBugs

    1 关于PMD 1 1 如何设置 PMD 检查 以忽略其中一些检查 例如 变量名称太短或太长 删除空构造函数等 如果我这样做 则会出现另一个警告 指出该类必须有一些静态方法 基本上 该类是空的 以供以后开发 我喜欢暂时保留这种状态 1 2
  • 尝试使用 wordnet java api 查找同义词

    我正在尝试使用 Wordnet java api 在 java 中查找某些单词 字符串类型 的同义词 但我很难弄清楚它是如何工作的 我找到了这个链接http lyle smu edu tspell jaws doc edu smu tspe
  • 将 HTML5 转换为独立的 Android 应用

    我有一个动态HTML5不包含任何外部资源的文档 文档内没有编码图像 CSS 和脚本 这个 HTML5 应用程序在互联网浏览器上运行良好 我想知道是否有可能convert this HTML5 应用程序转换成独立的 Android 应用程序
  • 从AWS SDK中,如何获取当前登录的用户名(或IAM用户)?

    我正在使用 Ruby SDK V2 但我想我的问题比具体实现更笼统 因为我在任何 SDK 中都找不到答案 如何获取我的会话当前所属的用户名 和 或 IAM 用户 我让 SDK 运行其默认行为来选择凭据 ENV 变量 然后是 默认 配置文件或
  • 如何在 Android 中使用 Espresso 设置文本视图的值

    我正在为片段编写测试用例 我可以将文本设置为 Edittext 但无法通过测试将文本设置为文本视图 请任何人帮助我解决这个问题 贝娄是我用于编辑文本的代码 onView withId R id editText perform typeTe
  • 使用“dispatch_async(dispatch_get_main_queue(),^{block})”更新UI

    我想更新 NSURLSession 的完成块中的 UI 最初的实现并没有立即更新 UI 大约 20 秒后它更新了 UI 这是最初的实现 NSURLSessionDataTask task self session dataTaskWithR
  • Convert.ToInt32() 带逗号的字符串

    我有一个字符串 有时用逗号分隔数字 例如1 500我需要将其转换为 Int 目前它抛出异常 有人可以告诉我如何解决这个问题 以便有时我可以输入带逗号的数字 有时不带逗号 它仍然会转换 你可以使用int Parse http msdn mic
  • 如何防止点击 Google 地图中的标记时相机移动?

    我正在使用适用于 iOS 的 Google 地图 SDK 我想在点击标记时防止相机移动 我怎样才能做到呢 在viewDidLoad中添加以下代码 BOOL mapView GMSMapView mapView didTapMarker GM
  • 为什么 AngularJS 在使用 ng-bind-html 时会去掉 data- 属性?

    我正在使用 contentEditable div 来使用户能够格式化他们的文章 我对html内容做了一些处理并保留它 我在用ng bind html当观众想要阅读文章时呈现结果 我不想使用 sce trustAsHtml因为我仍然希望 A
  • 有多少用户获得了更新的应用版本

    我最近将新版本的 Android 应用程序推送到了 Play 商店 并想看看有多少用户已经成功获取更新 似乎有关于 Android 版本和正在使用的设备的统计数据 但我似乎无法找到有关我的用户正在使用的应用程序版本的任何信息 Go to h
  • 为什么这会导致 Haskell Conduit 库内存泄漏?

    我有一个conduit https hackage haskell org package conduit管道处理长文件 我想每 1000 条记录为用户打印一份进度报告 所以我这样写 Every n records perform the
  • Rails 模型中的 class_nameforeign_key

    我最近遇到了这段代码 用户有很多答案 class name 和 foreign key 的目的是什么 class Answer lt ApplicationRecord belongs to user class name gt Quest
  • 如何检查DLL文件是否已注册?

    如何以编程方式查找用 C 编写的 DLL 文件是否已注册 我已经尝试过这段代码 但它没有成功 如果我注册一个 DLL 文件并使用此代码进行检查 它将返回 如果我取消注册它并运行同一段代码 它会再次返回 true 我将 DLL 文件的完整路径
  • 使用 CSS 和 JQuery 创建组织结构图结构

    I was checking on stack forum Trees in Twitter Bootstrap https stackoverflow com questions 11167628 trees in twitter boo
  • OSGi:将参数传递给特定包

    我有一个带有自定义 Main 类的自定义 jar 它启动 OSGi 框架并安装 启动捆绑包 这个主 jar 还包括一个属性文件 目标 我有一个包 A 它应该以某种方式获取主 jar 的该属性文件的属性 我的第一次尝试是在捆绑包 A 中定义一
  • 在Python中实现函数的前向声明[重复]

    这个问题在这里已经有答案了 是否可以在 python 中声明函数并单独实现它们 我的意思是在 C 中 void foo void foo C 前向声明用于解决依赖性问题 功能foo由函数使用bar and foo needs bar在声明它
  • 在模拟器中观察短信发送应用程序

    有没有办法从模拟器读取传出的短信 在 logcat 中我看到这条消息 D SmsStorageMonitor 738 SMS send size 0 time 1327423357467 有没有办法获取接收者和内容 发出的短信似乎没有保存在
  • 为什么我可以使用 Application 作为 ViewModelComponent 和 Hilt 中的默认绑定?

    来自article https developer android com training dependency injection hilt android component default 我知道每个 Hilt 组件都带有一组默认绑