2011-11-24 49 views
4

最近我發現了一個代碼片斷,它使用以下技術爲了從應用程序上下文的任何位置靜態訪問。它看起來很酷,但是真的是一個不錯的選擇,或者出於某種原因是一個壞技術?獲取ApplicationContext的技巧

public class MyApp extends Application { 
    private static MyApp instance; 

    public static MyApp getInstance() { 
     return instance; 
    } 

    public static Context getContext(){ 
     return instance.getApplicationContext(); 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     instance = this; 
    } 
} 

回答

5

除非你只是暴露,需要一個Context作爲參數,你的類需要Context(並從Activity等在傳遞)內的公共方法,這是做它的方式。

4

這肯定會起作用。只要小心使用任何你不濫用它的單身人士。閱讀this question的答案,解釋爲什麼ApplicationContext很少(有時)是正確的上下文使用。

此外,讓ApplicationContext在任何地方都可用,這讓您可以更輕鬆地組織您的類,因爲您不需要考慮ApplicationContext的真正需求以及是否應該考慮ApplicationContext等。這只是也許取決於你是如何被訓練的。

雖然othernotable people不同意我對單身人士總是很警惕,但我認爲它仍然是相當廣泛的爭論,單身人士是否是模式或反模式。如果你是谷歌單身人士和反模式,你會發現像this這樣的文章,在我看來這些文章相當不錯。