【发布时间】:2014-08-09 09:12:43
【问题描述】:
我知道为什么使用静态处理程序是个好主意(在处理处理程序时避免内存泄漏)。但是,我读过的大多数内容似乎都暗示它是为了防止应用程序/上下文泄漏。所有示例代码都有一个 Activity 或 Service 作为外部类。例如,这篇经常链接的帖子谈到了泄露的上下文和视图 (http://www.androiddesignpatterns.com/2013/01/inner-class-handler-memory-leak.html)。它以引用“底线是什么?如果内部类的实例超出活动的生命周期,请避免在活动中使用非静态内部类。相反,更喜欢静态内部类并保持对内部活动的弱引用。”
这是否意味着如果拥有的类没有与 Android 生命周期相关的任何字段并且不是 Activity/Service/etc,则可以使用非静态处理程序?我会这么认为,但 Lint 警告并不关心外部类是什么类。我知道我仍然可以泄漏我的外部类及其字段,但在我的场景中至少它几乎什么都没有。
【问题讨论】:
标签: android