我正在开发一个应用程序,其中我将 Activity 的上下文传递到从 Object 派生的类中。
这样做有什么问题吗?
我正在开发一个应用程序,其中我将 Activity 的上下文传递到从 Object 派生的类中。
这样做有什么问题吗?
像 Activity 或 Service 那样维护 Context 的实例将为内存泄漏开辟道路。
但是,保留对返回的实例的引用getApplicationContext()
应该是无害的。
本质上并没有什么错。例如,每个View
班级都这样做。
Activity
唯一的危险是在它被销毁后保持对它的引用。这是内存泄漏的常见来源。有关这方面的更多信息,请参阅博客文章避免内存泄漏。
View
子类避免泄漏,因为当活动被销毁时,对视图本身的引用通常会消失。如果维护引用的类实例没有像那样消失,那么您需要安排引用消失。一种选择是覆盖onDestroy
您的活动并在那里进行一些清理。另一种是使用 aSoftReference
而不是对上下文的硬引用。