2012-07-08 25 views
4

如何在Android應用程序中存儲上下文? 通常需要在傳統類中使用它,例如Activity(數據庫適配器)。如何存儲上下文?

我嘗試在靜態字段中保存上下文,但它可以調用內存泄漏。

也許,如果我在傳統類中擴展Context並且在裏面調用getApplicationContext()會更好嗎?

+2

最好的方法是你發送'Context'變量到常規類的每個構造函數(需要上下文)..並將其作爲該類的私有成員存儲... – 2012-07-08 05:32:58

回答

2

這樣做的好方法是在構造函數中傳遞Context。您可以在每個示例代碼中看到Context正在傳遞到自定義類中作爲未來使用的參數。

fedorvlasov's LazyListAdapter(這是從網頁延遲加載圖像的非常好的練習),您可以看到構造函數如下所示:public LazyAdapter(Activity a, String[] data)

這樣,每當您在活動之外並且需要使用它時,您已經將其存儲爲字段。

這樣做的另一種方式(不推薦)是使用應用程序上下文的靜態字段。

public static final Context = getApplicationContext(); 

你把這個放在啓動活動中,你有它,在應用程序的整個生命週期內訪問應用程序上下文。

+0

是的,現在我使用靜態字段。它可以調用內存泄漏嗎? – bvitaliyg 2012-07-08 05:38:05

+1

@bvitaliyg是的,它可以......你不應該那樣做。 – 2012-07-08 05:38:19

+0

@AlexLockwood如果這是他應該瞭解的一個選項。但我也補充說不推薦。 – thepoosh 2012-07-08 05:45:26

相關問題