getcontext android



使用Android的getBaseContext,getApplicationContext或使用Activity的“this”的不同規則 (1)

getBaseContext()是ContextWrapper的方法。 ContextWrapper是“代理Context的實現,它簡單地將所有調用委託給另一個Context。可以子類化來修改行為而不改變原始Context。” (根據javadocs)

因此,這用於將調用委託給另一個上下文。

我已經搜索了很多這個問題,並且發現了很多關於何時使用getBaseContextgetApplicationContext或Activity自己的指針的不同建議。

經常出現並且似乎很有意義的三條規則是 -

  1. 對於上下文活動的長期引用,只要您的應用程序存在,就應該使用getApplicationContext
  2. 對於生命週期與其活動相關的上下文,應使用自己的活動上下文( this
  3. 靜態存儲上下文指針只是非常謹慎(如果可能的話,根本不存在)

假設這些是正確的, getBaseContext有什麼用?

我見過許多使用以下方法創建新意圖的例子 -

Intent intent = new Intent(getBaseContext(), myClass.class);

與 - 相反 -

Intent intent = new Intent(this, myClass.class);

哪個是正確的或推薦的方法,為什麼?





android-context