Минусы singleton`ов Android?

Добрый день.

Вот singleton который я использую
public class singleton
{
    private static singleton instance;

    public static synchronized singleton getInstance() {
        if (instance == null) {
            instance = new singleton();
        }
        return instance;
    }
}


Какие у нее есть минусы, можете дать совет как правильно реализовать singleton`ы
  • Вопрос задан
  • 506 просмотров
Пригласить эксперта
Ответы на вопрос 3
@IceJOKER
Web/Android developer
Как минимум сделать конструктор приватным (:
Ответ написан
Комментировать
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Как уже говорили - проблемы при тестировании, сильная связность, сложно поддерживать такой код. Возникает желание хранить там какие-то данные, это неправильно, потому что приложение могут убить, активити восстановится, а данные - нет.
Дальше идут утечки памяти (в случае, если в синглтоне каким-либо образом остаются ссылки на вьюхи или контекст).

В вашей конкретной реализации - постоянные накладные расходы при каждом доступе к инстансу (синхронизация). Лучше сделать double-check или instance holder.
Тут вот подробно всё расписано.
Ответ написан
Комментировать
mitaichik
@mitaichik
Забыли еще добавить и про возможные утечки памяти, если вы там контексты передаете.

Вообще, и лучше, и удобнее использовать DI, для андройда популярен Dagger 2 от гугла https://google.github.io/dagger/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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