我在 android 应用项目中使用dagger 2进行依赖注入。
问题是如何在活动死亡时从组件中删除引用?
我已阅读一些有关自定义范围的文档,并且我创建了一个名为 @ForActivity 的自定义范围,因此对其进行此注释的引用将在活动时删除死了,但他们没有。
有关此问题的任何建议吗?
答案 0 :(得分:2)
如果您的组件共享活动的生命周期 - 这意味着在onCreate
中创建组件,将其存储在活动本身中 - 它将在活动生命周期结束时与活动一起进行垃圾收集。 / p>
另一方面,如果在静态变量或其他一些长寿命对象中放置一个以某种方式引用Activity的组件,则会产生内存泄漏。这是唯一要记住的事情。
什么都不会神奇地被删除"因为Dagger只生成处理对象创建的POJO。通常只要让GC完成它就足够了。
范围只是组依赖关系并定义关系,但最终组件只是一个包含更多对象的对象。如果您没有像上面提到的那样造成内存泄漏,垃圾收集器会将它与活动及其他所有内容一起删除。
我最近还提供了有关范围/活动/范围对象的2个详细答案,您可以在其中找到有关如何使用范围/活动的更具体的示例: