从记忆中删除引用

时间:2017-06-10 14:07:24

标签: android dagger-2

我在 android 应用项目中使用dagger 2进行依赖注入

问题是如何在活动死亡时从组件中删除引用?

我已阅读一些有关自定义范围的文档,并且我创建了一个名为 @ForActivity 的自定义范围,因此对其进行此注释的引用将在活动时删除死了,但他们没有。

有关此问题的任何建议吗?

1 个答案:

答案 0 :(得分:2)

如果您的组件共享活动的生命周期 - 这意味着在onCreate中创建组件,将其存储在活动本身中 - 它将在活动生命周期结束时与活动一起进行垃圾收集。 / p>

另一方面,如果在静态变量或其他一些长寿命对象中放置一个以某种方式引用Activity的组件,则会产生内存泄漏。这是唯一要记住的事情。

什么都不会神奇地被删除"因为Dagger只生成处理对象创建的POJO。通常只要让GC完成它就足够了。

范围只是组依赖关系并定义关系,但最终组件只是一个包含更多对象的对象。如果您没有像上面提到的那样造成内存泄漏,垃圾收集器会将它与活动及其他所有内容一起删除。

我最近还提供了有关范围/活动/范围对象的2个详细答案,您可以在其中找到有关如何使用范围/活动的更具体的示例: