2012-07-16 18 views
1

假設我的應用程序有很多進程。
我嘗試運行一些init代碼(實際上將應用程序上下文存儲在一個靜態變量中)Application onCreate()。但是我發現在某些進程中,onCreate()不會在同一進程中的其他代碼之前運行,因此無法訪問緩存的上下文。
我應該在哪裏放置init代碼(存儲應用程序上下文),以便它必須在同一進程中的任何代碼之前運行?在android中有沒有初始化回調的過程?

+0

您的Application類中的'onCreate()'必須先於其他任何內容執行。請更詳細地解釋你認爲你正在觀察的內容。 – 2012-07-16 10:32:31

+0

當多進程時,這也是正確的嗎? 現在,我的情況是某個進程不遵守這個規則... – Bear 2012-07-16 10:41:34

+0

如果你有多個進程,你的Application類的一個實例在**每個進程**創建時實例化。然後調用'onCreate()'。這是在創建任何其他組件之前完成的。 – 2012-07-16 10:44:33

回答

1

根據我們在聊天中的討論,您遇到了問題,因爲您正在嘗試在某些助手類的靜態初始化期間獲取應用程序的上下文。我建議如下:

如果你的助手類只使用Android組件 那麼到時候一個Android組件調用類 的Application.onCreate()將被稱爲 ,你可以從那裏獲取上下文。 你只需要等待,直到你從Android組件獲得實際的調用才能獲取上下文。

不要試圖在輔助類實例化後儘快做到這一點。只有當你需要它時才做。