我试图理解为什么在Hilt的DI中引入了ActivityRetainedScoped
,感觉这个作用域与ViewModelScoped
应该是一样的。我原来的印象是作用域像这样工作:
AppScope(单例)> ViewModelScope > ActivityScope > ViewScope > ...
但是这张图似乎暗示着ViewModel和Activity的作用域是...同级的?
根据文档:
"ActivityRetainedComponent跨配置更改存在,因此它会在第一个Activity#onCreate()创建并在最后一个Activity#onDestroy()销毁。"
嗯,ViewModel也是如此,对吧? 我非常确定ViewModel可以在配置更改后生存下来(这就是它们存在的全部意义)
ActivityRetainedScoped
是什么?它与VM范围有何不同?为什么谷歌喜欢让本应概念简单的事情变得复杂起来?
https://developer.android.com/training/dependency-injection/hilt-android