If I understand things correctly, the Application is a singleton that's instantiated when the app is started
는 예,하지만 당신에서, 어쩌면보기의 OS 지점에서 싱글이다.
and its public variables will be global
참이지만 정적 변수 만 직접 액세스 할 수 있습니다. 비 정적 인스턴스를 얻으려면 getInstance()
메소드를 제공해야하며, 그런 다음에 만 public 선언 된 변수 클래스에 액세스 할 수 있습니다. 지금까지 자바와 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
은 고유 한 의미와 논리를 가지고 있으며 동시에 그것에 대한 참조를 얻는 것은 위험하고 무의미합니다.
는 빠른 응답 @gunar에 대한 another similar question.
감사와 관련된 것처럼 보일 수 있습니다. 그러나 나는 아직도 그것을 완전히 얻지 못한다. 여기에 다른 질문이 있습니다. "MyApp extends Application"을 사용하여 응용 프로그램을 확장하고 "public String myString"을 추가하면 전 세계적으로 myString에 액세스 할 수 있으며 MyApp 사본이 하나뿐이므로 MyString 사본 하나만 생성됩니다. 내가 볼 수 있듯이 정적 변수도 전역 적으로 액세스 할 수 있으며 여기에는 단 하나의 복사본 만 있습니다. – Shanie
다음은 정식 버전입니다. 빠른 응답 @gunar에 감사드립니다. 그러나 나는 아직도 그것을 완전히 얻지 못한다. 여기에 다른 질문이 있습니다. "MyApp"로 응용 프로그램을 확장하고 "public String myString"을 추가하면 전 세계적으로 myString에 액세스 할 수 있으며 MyApp 사본이 하나뿐이므로 MyString 사본 하나만 생성됩니다. 정적 myString을 만들면 전역으로 액세스 할 수 있으며 복사본이 하나뿐입니다. 그것의 모든 공용 메서드는 이미 같은 일을 (성능, 가독성 등) 할 것 같습니다 MyApp 내에서 정적 myString을 사용하는 이유가 있습니까? 감사합니다 – Shanie