我在Google上多次搜索“使用应用程序上下文或活动上下文”。
大多数答案是:“尽可能使用应用程序上下文 getApplicationContext()以防止上下文内存泄漏”。
我很困惑:
为什么使用Activity上下文可能会导致内存泄漏,但是:
“活动上下文与活动相关联,如果活动被销毁则可以销毁”
BUT
“应用程序上下文与应用程序相关联,并且在应用程序的整个生命周期中始终相同 - 它不会更改”?
答案 0 :(得分:0)
Activity
个实例是暂时的:它们根据用户与您应用的互动来来去去。您的应用总体上只有一个Application
实例,该实例在应用进程的生命周期内存在。举一个简单的例子:用户通过启动器(主屏幕)启动您的应用程序,创建并启动MainActivity
。如果这是第一次启动,则启动应用程序的流程,同时创建Application
上下文。用户按下BACK
键,您的MainActivity
退出,通过其onDestroy()
。现在,如果用户重新启动您的应用,则会创建一个新的MainActivity
实例。但是,您的应用程序进程未被终止(假设没有内存压力),因此Application
对象单例仍然存在且有效。您的原始MainActivity
实例不存在。