为什么使用Activity上下文导致Context内存泄漏

时间:2014-08-25 11:07:01

标签: android memory android-activity memory-leaks android-context

我在Google上多次搜索“使用应用程序上下文活动上下文”。

大多数答案是:“尽可能使用应用程序上下文 getApplicationContext()以防止上下文内存泄漏”。

我很困惑:

为什么使用Activity上下文可能会导致内存泄漏,但是:

活动上下文与活动相关联,如果活动被销毁则可以销毁”

BUT

应用程序上下文与应用程序相关联,并且在应用程序的整个生命周期中始终相同 - 它不会更改”?

1 个答案:

答案 0 :(得分:0)

Activity个实例是暂时的:它们根据用户与您应用的互动来来去去。您的应用总体上只有一个Application实例,该实例在应用进程的生命周期内存在。举一个简单的例子:用户通过启动器(主屏幕)启动您的应用程序,创建并启动MainActivity。如果这是第一次启动,则启动应用程序的流程,同时创建Application上下文。用户按下BACK键,您的MainActivity退出,通过其onDestroy()。现在,如果用户重新启动您的应用,则会创建一个新的MainActivity实例。但是,您的应用程序进程未被终止(假设没有内存压力),因此Application对象单例仍然存在且有效。您的原始MainActivity实例不存在。