getApplicationContext()
之间哪个更有效(扩展活动)?为什么呢?
答案 0 :(得分:6)
据我所知,效率方面没有差别(如果有的话应该可忽略不计)。引入getApplicationContext()
的原因是为了避免内存泄漏。
例如,如果您将Activity
作为上下文传递给某个长生命对象,并且此对象将保留此上下文的生命周期,那么您将遇到问题。例如,如果更改配置或销毁活动,则活动将被视为已死(作为组件)。但由于至少有一个对这个旧Activity
对象的引用,它不会被垃圾收集器清理。
因此,在这种情况下,当您需要存储较长时间的上下文时,应使用context.getApplicationContext()
而不是直接保存上下文。并且因为在进程运行时,Application对象始终被视为“活动”,所以没有内存/资源泄漏。
答案 1 :(得分:-1)
getApplicationContext()
更有效率,因为它是整个应用程序的主要上下文,而不是您正在运行的每个活动的上下文实例。
阅读:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html,然后你会知道我在说什么