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
,您必须确保:
- 你持有引用的生命周期完全包含在被引用事物的生命类型中
- OR ... 使用
WeakReference
并在使用前检查 null
以允许 referred-to 项目获得 garbage-collected
UI 元素的生命周期严格包含在封闭的 Context
中,因此它们直接引用上下文而不使用 WeakReference
.[=21 是正常的=]
此外,还有一些依赖父上下文的明确示例 specifically for dialogs.
如果我们创建对象属性 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
,您必须确保:
- 你持有引用的生命周期完全包含在被引用事物的生命类型中
- OR ... 使用
WeakReference
并在使用前检查null
以允许 referred-to 项目获得 garbage-collected
UI 元素的生命周期严格包含在封闭的 Context
中,因此它们直接引用上下文而不使用 WeakReference
.[=21 是正常的=]
此外,还有一些依赖父上下文的明确示例 specifically for dialogs.