Используя статические переменные в Android

В андроиде статические переменные действительно ли использования являются методическими рекомендациями? Например, реализовывая Шаблон "одиночка" в Java, я обычно делаю:

private static A the_instance;
public static A getInstance() {
    if (the_instance == null) {
       the_instance = new A();
    }
    return the_instance;
}

Кроме того, когда это становится очищенным JVM Android?

Спасибо.

56
задан Mat Nadrofsky 19 March 2010 в 17:38
поделиться

3 ответа

статические поля присоединены к экземпляру Class в целом, который, в свою очередь, присоединен к ClassLoader , который загрузил класс. the_instance будет выгружен, когда будет восстановлен весь ClassLoader . Я на 90% уверен, что это происходит, когда Android уничтожает приложение (не когда оно уходит в фоновый режим или приостанавливается, а полностью закрывается).

Так что считайте это живым, пока работает ваше приложение. Синглтон - хорошая идея? У людей разные взгляды. Я считаю, что при правильном использовании это нормально. Я не думаю, что ответ сильно изменится на Android. Использование памяти не является проблемой само по себе; если вам нужно загрузить кучу вещей в память, это либо проблема, либо нет, независимо от того, инкапсулируете ли вы данные в синглтоне.

63
ответ дан 26 November 2019 в 17:29
поделиться

Я не уверен, подходит ли такой подход для мобильной платформы, где у вас ограниченный объем доступной памяти. Не говоря уже о том, что приложение будет запускаться на устройстве с поддержкой многозадачности.

Я думаю, что этот подход может занять память устройства, но у меня нет документа, подтверждающего это. Возможно, кто-нибудь более образованный, чем я, поделится своими мыслями.

0
ответ дан 26 November 2019 в 17:29
поделиться

Нет. Не делай этого! Синглтон - это антипатерн! . Вместо этого используйте внедрение зависимостей, будь то через фреймворк (например, через Dagger или Roboguice ) или путем явной передачи созданного объекта.

-7
ответ дан 26 November 2019 в 17:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: