Android:由于 activity 和上下文存储为对象属性导致内存泄漏?

Android: Memory leaks because of activity and context stored as objects attributes?

如果我们创建对象属性 activity 和另一个 context,是否存在引发 "Memory leaks" 异常的风险( 例如 ) , 在 onAttach() 方法中定义?

它可能很有用,尤其是对于 context 在对话框中 class。

鉴于对 #onAttach() 的引用,听起来您正在处理片段。根据 Android documentation:

the fragment can access the FragmentActivity instance with getActivity() and easily perform tasks such as find a view in the activity layout

API 旨在向您公开任何需要的 Context,因此简单地使用 getActivity() where/when 更符合习惯。

一般来说,如果您引用任何 UI 元素或任何类型的 Context,您必须确保:

  1. 你持有引用的生命周期完全包含在被引用事物的生命类型中
  2. OR ... 使用 WeakReference 并在使用前检查 null 以允许 referred-to 项目获得 garbage-collected

UI 元素的生命周期严格包含在封闭的 Context 中,因此它们直接引用上下文而不使用 WeakReference.[=21 是正常的=]

此外,还有一些依赖父上下文的明确示例 specifically for dialogs.