【问题标题】:How to ensure resources are released using Google Dagger 2如何确保使用 Google Dagger 2 释放资源
【发布时间】:2015-09-18 06:28:58
【问题描述】:

Google Dagger 2 是关于对象范围的,例如当您在 http 请求期间需要对象时,您可以使用 @RequestScope 注释您的提供程序方法。

但某些提供的资源需要释放,例如CloseableHttpClient 需要为closedExecutorService 需要为shutdown

如何使用 Google Dagger 2 指定在对象超出范围时必须执行哪些操作才能释放对象?

【问题讨论】:

    标签: java dependency-injection scope dagger dagger-2


    【解决方案1】:

    如何使用 Google Dagger 2 指定在对象超出范围时必须执行哪些操作才能释放对象?

    你不能。 Dagger 2 是关于提供创建对象的依赖项,而不是管理它们。

    如果您有需要停止或关闭的对象,您仍然必须使用组件生命周期方法(如活动onDestroy)来执行此操作。

    【讨论】:

    • 那么范围界定是什么?非全局范围不是意味着范围将结束吗?不过我得到了关于 Dagger 的部分是关于管理依赖关系,而不是对象生命周期
    • @ooxi Scopes 是用来组合在一起的东西。您可能有一个@Singleton AccountManager,但每个用户都会有自己的@PerUser Balance。作用域有助于确保具有相同生命周期的对象在同一个组件中结束,并且没有什么变化不那么频繁地依赖于它们,因为用户可能比某些单例(不应更改)更频繁地更改。
    • 感谢您的澄清!
    猜你喜欢
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 1970-01-01
    • 2015-12-12
    相关资源
    最近更新 更多