2013-11-14 31 views
1

在android應用程序的應用程序的子類中有一個靜態變量是否有任何意義。 如果我理解正確,應用程序是一個單例,它在應用程序啓動時實例化,其公共變量將是全局的。 如果我在Application子類中聲明一個變量爲「public static」,那麼我是不是毫無意義地創建了一個全球性的變量呢?應用程序子類中的靜態變量。 (Android)

感謝您的幫助。

回答

1

If I understand things correctly, the Application is a singleton that's instantiated when the app is started
是的,它是從視圖OS點單,也許,但不是從你的,除非你實現它 - 讓你的類的靜態引用,並提供了一個靜態方法getInstance()

and its public variables will be global
確實,但只有靜態變量纔會被直接訪問。您需要提供getInstance()方法才能獲得非靜態實例,只有這樣您才能訪問類公共聲明變量。到目前爲止,Java和OOP的觀點並不新鮮。

If I declare a variable as "public static" in the Application subclass, am I just pointlessly making a variable global that would have been global anyway?
是的,您可以非常好地將這些定義在其他地方。

要添加更多內容:無論如何,您不應該關心如何獲得Application類的實例,因爲這似乎是一種不好的做法。一個Application有其自己的含義和邏輯,並在同一時間獲得對它的引用是危險的和毫無意義的。

看起來似乎與another similar question.

+0

感謝您的快速回復@ gunar。但是我仍然沒有完全明白。這是我的另一個問題。如果我用「MyApp extends Application」擴展應用程序,並向其中添加一個「public String myString」,那麼我可以全局訪問myString,並且由於只有一個MyApp副本,所以只創建一個MyString副本。從我所看到的靜態變量也可以在全局訪問,並且只有一個副本。 – Shanie

+0

以下是完整版...感謝您的快速回復@ gunar。但是我仍然沒有完全明白。這是我的另一個問題。如果我使用「MyApp」擴展應用程序並向其中添加「public String myString」,那麼我可以在全局訪問myString,並且由於只有一個MyApp副本,因此只創建了一個MyString副本。如果我創建一個靜態myString,它也可以全局訪問,並且只有一個副本。是否有任何理由在MyApp中使用靜態myString時,它的所有公共方法已經看起來都做了同樣的事情(性能,可讀性等)??謝謝 – Shanie

相關問題