2010-09-03 137 views
1

我在活動中定義了靜態變量,以便在活動之間傳遞複雜數據。Android中的靜態變量

很多人建議不要在Android中使用任何靜態變量。有些人建議將全局數據存儲在自定義的android.app.Application中。我不認爲靜態變量和自定義應用程序之間有任何區別。

我想知道你對靜態變量的想法。有什麼建議麼?

謝謝。

回答

0

親愛的上帝不要那樣做。如果您需要在活動之間傳遞對象,請使用服務。

+1

你能告訴我爲什麼嗎?它會導致任何錯誤結果? Android常見問題說,靜態變量是活動之間傳遞數據的一種方式: http://developer.android.com/guide/appendix/faq/framework.html#3 – user256239 2010-09-03 22:18:44

+2

這只是一個糟糕的設計,並打敗了存在面向對象。靜態字段通常用於讀取數據。如果你傳遞或設置靜態數據,你應該重新考慮你的設計。 – Falmarri 2010-09-04 00:34:26

+0

很高興能夠在沒有任何評論的情況下獲得一年前的回答。 – Falmarri 2011-10-14 17:24:44

0

靜態變量是每個定義的全局變量,因爲它們的作用範圍是一個類而不是實例。 根據您的設計,這些全局變量可能集中在更多/更乾淨/更容易,而不是散佈在衆多類中。此外,在傳統的軟件工程中,全局變量被認爲是一件壞事,這是正確的,但是當在Android平臺中編寫資源稀缺的資源時,最佳利用資源來提升性能是最重要的。你應該以完全不同的思維方式發展。 在這種情況下,全局變量不一定非常糟糕。

請注意,Android平臺還提供了一個服務界面,可以滿足您在活動之間共享變量的需求。

+3

當你已經擁有一個擁有全局數據的應用程序類時,爲什麼要使用服務作爲數據存儲,並且在活動和服務中都可以輕鬆訪問並且不需要煩人的活頁夾? – schwiz 2010-09-04 01:52:37

+0

@schwiz當你的應用程序在後臺運行時,會發生什麼,只有你的服務正在運行。你的應用程序全局變量是否也會被垃圾收集? – 2012-10-24 17:16:23

+1

@IgorG。不,你是應用程序與活動混淆。只要你有東西在運行,應用程序就會保留在內存中,可以是Activity,Service,BroadcastReciever。 – schwiz 2012-10-26 01:32:35