2012-06-01 48 views
2

這不是關於上下文對象本身的問題。我想知道管理其參考的最佳方式。當我創建Android對象,如Activity,Service等 - 上下文已經可以在任何地方訪問。Android上下文對象如何處理

但是我有很多不同類的數據訪問,各種共享實用程序等。我發現自己寫每一個調用和單獨傳遞上下文。我想知道是否有任何好的方法來處理上下文。也許靜態?在我自己的Application對象中存儲引用是個不錯的主意嗎?

public class MyApplication extends Application 
{ 
    public static Context Context; 

這樣我就可以從應用程序的任何地方訪問上下文。這看起來是個好主意嗎?

+1

如果要存儲應用程序上下文,可以在某種程度上做到這一點。請參閱[此問題](http://stackoverflow.com/questions/987072/using-application-context-everywhere),其中討論了此方法的潛在問題。你應該從未做過的事情是在應用程序對象中存儲一個Activity上下文。你將會泄露這個上下文並進入問題。 – 2012-06-01 17:06:24

回答

0

使public static Context mContext;作爲一個全局變量,並在onCreate()開始時,添加mContext = this;。它使訪問更容易。通過將其設置爲公開和靜態,其他文件可以查看主要活動的上下文,而不必將其作爲參數傳遞給任何函數。在我看來,這可能是管理對其引用的最好/最簡單的方式。它也包括對MainActivity.this的各種引用。

alextsc的評論顯示了一個有用的鏈接,可以從中發現問題。

+0

或應該創建靜態吸氣劑。 – Sajmon

+0

無論如何,我已經子類化應用程序。我的應用程序使用服務,接收器等活動只是應用程序的一部分。我認爲將MyApplication公開爲靜態會更好 - 看起來像這個上下文(應用程序本身)在我需要的任何環境下都能很好地工作。 – katit