FRR*_*FRR 8 android dagger-2 dagger-hilt
我试图理解为什么ActivityRetainedScoped在希尔特引入 DI。在我看来,范围与ViewModelScoped应该做的事情是相同的。我的印象是作用域是这样工作的:
AppScope (singleton) > ViewModelScope > ActivityScope > ViewScope > ...
但这张图有点暗示 ViewModel 和 Activity 范围是......兄弟姐妹?
根据文档:
“ActivityRetainedComponent 存在于配置更改中,因此它在第一个 Activity#onCreate() 处创建,并在最后一个 Activity#onDestroy() 处销毁。”
嗯,视图模型也是如此,不是吗?我非常确定视图模型可以在配置更改中幸存下来(如果首先将它们放在首位,这就是重点)
什么是ActivityRetainedScoped?它与 VM 范围有何不同?为什么谷歌喜欢将概念上应该简单的事情复杂化
https://developer.android.com/training/dependency-injection/hilt-android
And*_*rew 14
好吧,尽管 ActivityRetainedScope 和 ViewModelScope 是兄弟姐妹,人们可能认为这使它们相同,但事实上并非如此。
嗯,视图模型也是如此,不是吗?我非常确定视图模型可以在配置更改中幸存下来(如果首先将它们放在首位,这就是重点)
是的,但实际上不是。Viewmodel 确实可以在配置更改后幸存下来,但仅限于其范围内的生命周期所有者。那么让我们考虑以下场景:
您有两个依赖项,一个是ActivtyRetainedScoped,另一个是viewmodelscoped.
当您现在将 viewmodeldependency 注入 viewmodel 且 viewmodel 的生命周期所有者是一个活动时,那么您是对的,ActivtyRetainedScope 和 ViewmodelScope 都不会产生任何区别。
但现在让我们假设生命周期所有者是一个片段,在这种情况下,当您导航出片段时,viewmodelscoped 依赖项将“死亡”,并且 activtyretainedscope 依赖项将比 viewmodelscoped 依赖项寿命更长。
我希望我能解释它们之间的区别。当英语不是你的母语时,这些“范围”等有点困难。另外,如果这是正确答案,我也不是100%
| 归档时间: |
|
| 查看次数: |
4387 次 |
| 最近记录: |