Нагуглил несколько статей: в одной говорится, что синглтон идеален для хранения глобальных переменных. В другой - что он (синглтон) таки может быть уничтожен, и значения всех глобальных переменных исчезнут.
Вопрос у меня такой: в C# я объявлял static class
, и мог пользоваться его содержимым везде по коду. В этом классе главными были именно переменные (свойства), с методами ситуация была не так критична. Что в Java наиболее близко к static class
в C#?
Скорее всего, все же, ближе по смыслу синглтон - но тогда другой вопрос - в каких ситуациях он может быть удален системой, если я буду хранить ссылку на него в MainActivity
?
Singleton и статический класс, это две принципиально разные вещи.
Singleton - паттерн проектирования, который гарантирует, что можно создать лишь один единственный экземпляр данного класса.
Статический класс - класс экземпляры, которого не возможно создать. В Java такое предусмотрено только для вложенных классов. Правда есть способ эмулировать статический класс для классов верхнего уровня.
Если Вам от такого класса нужны только некие константы, лучше объявить их в интерфейсе. Если же Вам нужен ещё и функционал, используйте Singleton, но ссылку на него храните в главном классе программы и инициализацию делайте там же.
Для хранения статических констант удобно сделать интерфейс - в интерфейсе все поля public static final. Активити в андроид уничтожается даже при повороте экрана, поэтому и ссылка на синглтон может потеряться и сборщик мусора его убьет.
Виртуальный выделенный сервер (VDS) становится отличным выбором
E/AndroidRuntime: FATAL EXCEPTION: main Process: comexample
Я получаю String jsonObject в контроллереСтруктура файла следующая: