2011-05-02 57 views
4

我的誤解仍在繼續...有人可以澄清Android上下文引用?

任何人都可以引用正確使用get*Context()的參考嗎?我得到了有關使用getBaseContext(),getApplicationContext()getContext()的衝突建議,我的理解是使用thisget*Context()是一種方便。我想更具體地研究Dalvik打算實現的目標和訪問方法。

我有代碼評論,改變了我的電話getBaseContext()getApplicationContext(),現在我看到了使用這個建議。

+0

嘗試閱讀此主題http://stackoverflow.com/questions/1026973/android-whats-the-difference-between-the-various-methods-to-get-a-context – 2011-05-02 04:07:57

+0

可能的重複[區別getContext(),getApplicationContext(),getBaseContext()和「this」](http://stackoverflow.com/questions/10641144/difference-between-getcontext-getapplicationcontext-getbasecontext-and) – rds 2016-06-16 15:29:57

回答

1

http://android-developers.blogspot.co.uk/2009/01/avoiding-memory-leaks.html

閱讀這篇文章。這說明爲什麼我們應該使用getApplicationContext()而不是活動的this

這是文章的摘要:

總之,爲了避免上下文相關的內存泄漏,請記住以下幾點:

  • 不要讓長期參考上下文活動(對活動的引用應該與活動本身具有相同的生命週期)
  • 嘗試使用上下文應用程序而不是上下文活動
+1

不要忘記他們都是一個有點不同。 getContext()獲取CURRENT上下文,BaseContext()通常是原始父上下文。 ApplicationContext保證不會被混淆,因爲它與應用程序相關聯,而不與特定的任何活動關聯。 – 2011-05-04 01:54:54