当前位置: 首页 > 知识库问答 >
问题:

Dagger2活动范围,我需要多少模块/组件?

周祺
2023-03-14
  1. 我正在使用MVP架构,我需要为不同的活动注入不同的演示者。为此,我创建了@ActivityScope。这是否意味着我必须为每个活动创建一个单独的模块/组件?
  2. 如果我仍然负责创建和释放那些依赖项,那么自定义范围注释的目的是什么?不确定我是否正确,但我可以在所有模块/组件中使用@scope123,这不会有任何区别。

共有1个答案

曹振
2023-03-14

这是否意味着我必须为每个活动创建一个单独的模块/组件?

是的。而不是。

如果希望提供活动作用域依赖项(如活动本身、LoaderManager或类似的东西),则至少需要为每个活动创建一个新的组件对象,因为作用域的有效期与活动的有效期一样长。

如果我仍然负责创建和释放那些依赖项,那么定义范围注释的目的是什么?

作用域用于使这些依赖关系的管理更加容易。如前所述,活动范围随着活动被破坏而死亡。通过具有这些作用域依赖关系,您可以确保任何活动都不依赖于具有较高作用域/生存期并可能导致内存泄漏的活动。

而且,我喜欢把它看作是一捆捆的依赖关系,你可以热交换,然后就‘扔出去’。一个很好的例子是@userscope,它将保存用户数据、他的登录名、会话数据、...
如果我切换用户,我只需要抛出用户范围或更小的所有内容(关闭活动、删除用户组件),所有与用户有关的内容都将消失。下一个可以登录,副作用风险低。

 类似资料:
  • 似乎有几个问题,这些问题很老了,而且从Java 8对Jacoco的支持开始就发生了变化。 我的项目包含以下结构 我已经这样配置了 主要聚甲醛.xml 一个Pom.xml B pom.xml 我正在执行这个命令< code>mvn clean package。我可以看到jacoco.exec正在生成,但是我看不到任何验证数据的HTML报告。 请帮帮我。另一点是,我的配置对于项目是否正确? 更新 已识

  • 问题内容: 我最近开始使用AngularJS,现在构建应用的方式是这样的: MainController.js SomeController.js Im遇到的问题是范围未在模块之间共享。例如,无法从 MainController 获得变量“ test”。 最佳做法是什么?是否将所有控制器都以1个文件存储在1个模块中? 我如何能有1个页面和2个控制器并在它们之间共享,还是可以将所有内容仅放在一个控制

  • 无论 Struts2 还是 Spring,都提供了一种控制器: 每次请求,创建实例,使用后即抛弃。 这样的控制器的好处就是可以放心的吧 request 和 response 对象放心的存成它的私有 属性,反正使用一次后就丢掉了。 在 Nutz.Mvc,所谓控制器,实际上就是 Module,默认的,所有的模块都是整个应用程序唯一的, 除非你在 Ioc 配置文件里另有说明。 那么 Nutz 可以做到每

  • 问题内容: 我正在使用模板匹配创建一个简单的openCV应用程序,在这里我需要比较在大图像中查找小图像,然后将结果返回为true(如果找到匹配项)或false(没有找到匹配项)。 现在的问题是使用此minMaxValue进行决策(对/错)。我知道以上两种方法TM_SQDIFF和TM_SQDIFF_NORMED返回低值,而其他方法返回高值,因此我可以有2个不同的阈值并比较一个阈值(取决于模板方法的类

  • [警告]:由于激活规范不可用,因此无法激活消息驱动bean的消息endpoint。在激活规范可用之前,消息endpoint将不会接收消息。 MDB必须有激活规范吗?我希望它只是被激活,而不需要添加进一步的配置到服务器。

  • http://localhost/test?name= 它的工作没有任何问题,没有抛出任何异常或任何其他迹象。为什么?