哪個更有效getApplicationContext()
或這個(擴展活動)?爲什麼?在android中使用Context更高效嗎?
回答
還有據我所知(如果有應該忽略)在效率方面沒有差異。引入getApplicationContext()
的原因是爲了避免內存泄漏。
例如,如果您將Activity
作爲上下文傳遞給某個長活體對象,並且此對象將在此生命週期中保留此上下文,則會出現問題。例如,如果配置發生更改或者活動被破壞,則該活動被視爲死亡(作爲組件)。但是由於至少有一個對這個舊的Activity
對象的引用,它不會被垃圾收集器清理。
因此,在這種情況下,當您需要長時間存儲上下文時,應該使用context.getApplicationContext()
而不是直接保存上下文。而且因爲在進程運行時Application對象總是被認爲是「活着的」,所以沒有內存/資源泄漏。
使用getApplicationContext()
更高效,因爲它是整個應用程序的主要上下文,而不是您正在運行的每個活動的上下文實例。
閱讀:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html,那麼你就會知道我是什麼談論
爲什麼會虛擬方法調用(即[調用另一個虛擬方法](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'引用作爲參數便宜? –
閱讀此:http://android-developers.blogspot.com/2009/01/avoiding-memory-leaks.html,那麼你會知道在說什麼 –
- 1. '==='比'!=='更高效嗎?
- 2. 使用for循環更高效嗎?
- 3. 在Java中爲Android更快更高效
- 4. 在Three.js中使用精靈或BufferedGeometry更高效嗎?
- 5. Java:在圖形中使用setClip會更高效嗎?
- 6. 更高效地在MySQL中使用MAX()
- 7. 如何使用Context類android
- 8. 在minheap或maxheap上使用時,heapsort更高效嗎?
- 9. 使REST調用更高效
- 10. 讓Android Http BufferedReader更高效?
- 11. Android - 哪種效率更高?
- 12. 在Unity中更改場景或使用不同的UI屏幕更高效嗎?
- 13. 在Android NDK中使用比Android Manifest中的最低API更高的API有效嗎?
- 14. 使用Java編寫效率更高效
- 15. 如何避免RSpec中的「無效使用==在void context中」?
- 16. 在IE9中使@ font-face更高效
- 17. Android中更高效的地圖覆蓋
- 18. 我可以在Android中使用Context對象,如Spring(或Eclipse RCP)上下文嗎?
- 19. 在Android應用中效率更高?數據庫或對象
- 20. 這是UIImage的高效使用嗎?
- 21. jQuery「$(this)」:重複使用效率高嗎?
- 22. 在jQuery中爲child選擇器使用find()而不是>效率更高嗎?
- 23. 使用addEventListener或onclick進行性能效率更高嗎?
- 24. 分支後使用函數參數(Python)更高效嗎?
- 25. Flash場景 - 比使用mcs或幀更高效嗎?
- 26. 切片數組或使用Iterator :: skip更高效嗎?
- 27. 編寫UI或使用Interface Builder更高效嗎?
- 28. 使用標誌或if子句更高效嗎?
- 29. 比if語句更高效嗎?
- 30. 比較float比double更高效嗎?
更改您的標題。這不完全解釋你的問題。 –
你爲什麼在意?我懷疑在分析是[萬惡之源](http://c2.com/cgi/wiki?PrematureOptimization)之前,在分析和詢問此問題時,您會看到任何差異。 –