从内存中删除引用

remove references from memory

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

问题是当 activity 死亡时如何从组件中删除引用?

我阅读了一些关于自定义 scopes 的文档,并且我创建了一个名为 @ForActivity 的自定义范围,因此参考当 activity 死亡时,它们上的注释将被删除,但它们不会。

关于这个问题有什么建议吗?

如果您的组件共享 Activity 的生命周期——这意味着在 onCreate 中创建组件,将其存储在 Activity 本身中——它将与Activity 在活动生命周期结束时。

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

没有什么是神奇的 "removed" 因为 Dagger 只是生成 POJO 来为您处理对象创建。通常让 GC 完成它的工作就足够了。

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


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