我有几个关于自定义范围的问题:
这是否意味着我必须为每个活动创建一个单独的模块/组件?
是.和不.
在最起码你需要创建一个新的组件对象为每个活动,如果你想提供的活动范围的依赖性,如Activity本身,LoaderManager或类似的东西,因为范围将只是生活只要活动.
您是否需要为每个活动提供模块和组件的问题在很大程度上取决于您的体系结构.您也可以制作一个通用的,ActivityModule提供您可以重复使用的模型,演示者和视图.
您也可以罚款只是一个Component是否需要活动的只有基本的依赖,如如LoaderManager或Activity本身,那么你可以写一个ActivityModule只提供这些基本对象.然后,您可以将此模块与组件一起使用以提供依赖项.
如果您的Presenter(及其依赖项)可以通过构造函数注入创建,那么您可以使用单个组件和模块来完成所有活动.
如果您的演示者和视图是实现的接口,则需要创建一个提供实际实现的模块.
如果我仍然负责创建和释放这些依赖项,那么自定义范围注释的目的是什么?
范围是用来做这些依赖的管理更容易.如上所述,活动范围随着活动被破坏而消亡.通过使用这些作用域依赖项,您可以确定没有任何内容取决于具有更高范围/生命周期并且可能导致内存泄漏的活动.
此外,我喜欢将它视为可以热插拔并且只是"扔掉"的依赖关系.一个很好的例子是 @UserScope保存用户数据,他的登录,会话数据......
如果我切换用户我只需要用户范围或更少(关闭活动,删除UserComponent)以及与用户有关的所有内容离开了.下一个可以登录,副作用风险低.
范围主要是编译时间检查,可帮助您将层次结构引入依赖关系,因为所有编译器都会检查其中没有循环,并且没有任何请求来自它无法访问的范围的依赖关系.
| 归档时间: |
|
| 查看次数: |
1511 次 |
| 最近记录: |