2014-01-29 62 views
0

我有運行並執行其工作的活動,然後運行一項服務(活動結束時不會完成)。 一切正常。 我的問題:該服務使用在活動類中聲明爲靜態公共的值,當活動完成並且服務繼續工作並使用它們時,這些值是否重置? 當活動再次開始時,這些值會發生什麼。服務活動關係

回答

1

根據Android的document

我如何通過一個單一的應用程序/服務活動之間的數據?

公共靜態字段/方法

的另一種方法,使整個活動/服務數據訪問是使用公共靜態字段和/或方法。您可以從應用程序中的任何其他類訪問這些靜態字段。爲了共享一個對象,創建對象的活動將一個靜態字段設置爲指向該對象,並且任何其他想要使用此對象的活動都將訪問此靜態字段。

只要沒有調用activity的onDestroy(),我認爲靜態會留在內存中。一旦被調用,靜態成員將從內存中移除。

如果你需要保存你的數據,那麼你可以使用sharedprefrences。

活動/服務 - 從ContextWrapper繼承其實現相同的API,但代理其所有方法調用到隱藏內部Context實例,也被稱爲其基本上下文。每當框架創建一個新的Activity或Service實例時,它還會創建一個新的ContextImpl實例來完成任一組件將包裝的繁重工作。每個活動或服務及其相應的基本上下文都是唯一的每個實例。

+0

可以說我正在使用我的服務中的主要活動上下文,並且我將Context成員聲明爲靜態,當活動結束時,服務是否獲得空上下文? – EsmaeelQash

+0

服務在應用程序組件(如活動)通過調用startService()啓動時「啓動」。一旦開始,服務可以無限期地在後臺運行,即使啓動它的組件被銷燬。當您的活動停止時,活動對象將保持駐留在內存中,並在活動恢復時被調用。您不需要重新初始化任何導致恢復狀態的回調方法期間創建的組件。服務不會得到空上下文。活動仍在進行中。 –

+0

我知道它很混亂。檢查這個鏈接,它告訴什麼是上下文? http://www.doubleencore.com/2013/06/context/ –