2013-11-14 2 views
1

Есть ли смысл статической переменной в подклассе приложения в приложении Android. Если я правильно понимаю, приложение является синглом, созданным при запуске приложения, и его общедоступные переменные будут глобальными. Если я объявляю переменную как «public static» в подклассе Application, я просто бессмысленно делаю переменную global, которая была бы глобальной в любом случае?Статическая переменная в подклассе приложения. (Android)

Благодарим за помощь.

ответ

1

If I understand things correctly, the Application is a singleton that's instantiated when the app is started
Да, это синглтон с ОС точки зрения, может быть, но не от вашей, если вы не реализуете его - сделать статическую ссылку в своем классе и обеспечивают статический метод 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» и добавлю к нему «общедоступную String myString», то я могу получить доступ к myString глобально, и поскольку есть только одна копия MyApp, существует только одна копия MyString, когда-либо созданная. Из того, что я вижу, статическая переменная также доступна глобально, и есть только одна ее копия. – Shanie

+0

Вот полная версия ... Спасибо за быстрый ответ @gunar. Однако я до сих пор не полностью понял это. Вот мой вопрос по-другому. Если я продлю приложение с помощью «MyApp» и добавлю к нему «общедоступную String myString», то я могу получить доступ к myString глобально, и поскольку есть только одна копия MyApp, существует только одна копия MyString, когда-либо созданная. Если я создаю статическую myString, она также доступна по всему миру, и есть только одна ее копия. Есть ли причина использовать статическую myString внутри MyApp, когда все общедоступные методы уже работают одинаково (производительность, читаемость и т. Д.). Спасибо – Shanie

Смежные вопросы