2011-09-11 70 views
-3

哪個更有效getApplicationContext()或這個(擴展活動)?爲什麼?在android中使用Context更高效嗎?

+1

更改您的標題。這不完全解釋你的問題。 –

+1

你爲什麼在意?我懷疑在分析是[萬惡之源](http://c2.com/cgi/wiki?PrematureOptimization)之前,在分析和詢問此問題時,您會看到任何差異。 –

回答

6

還有據我所知(如果有應該忽略)在效率方面沒有差異。引入getApplicationContext()的原因是爲了避免內存泄漏。

例如,如果您將Activity作爲上下文傳遞給某個長活體對象,並且此對象將在此生命週期中保留此上下文,則會出現問題。例如,如果配置發生更改或者活動被破壞,則該活動被視爲死亡(作爲組件)。但是由於至少有一個對這個舊的Activity對象的引用,它不會被垃圾收集器清理。

因此,在這種情況下,當您需要長時間存儲上下文時,應該使用context.getApplicationContext()而不是直接保存上下文。而且因爲在進程運行時Application對象總是被認爲是「活着的」,所以沒有內存/資源泄漏。

-1

使用getApplicationContext()更高效,因爲它是整個應用程序的主要上下文,而不是您正在運行的每個活動的上下文實例。

閱讀:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html,那麼你就會知道我是什麼談論

+0

爲什麼會虛擬方法調用(即[調用另一個虛擬方法](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.4_r1/android /content/ContextWrapper.java#ContextWrapper.getApplicationContext%28%29))比傳遞現有'this'引用作爲參數便宜? –

+0

閱讀此:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html,那麼你會知道在說什麼 –

相關問題