Существует много вопросов и ответов о том, как реализовать глобальную переменную в Android / Java.
Таким образом, кажется, что можно реализовать или одиночный класс, или использовать сам класс данных со статическими переменными.
Я собираюсь начать более крупный проект и хотел бы начать с правой ноги.
Я просто не уверен, какой из них использовать.
Pro singleton / con Класс данных
- предположительно "чище" (но я действительно не знаю почему)
- гарантирует, что действительно всегда есть только одинпредставление
- создает новый экземпляр, если старый «очищается» (когда это может произойти?)
Con singleton / pro Класс данных
- не рекомендуется некоторыми (но не нашел убедительных причин)
- гарантирует, что существует только одно представление по дизайну
- очень легко получить доступ, просто написав MyDataClass.x (для доступа к singleton требуется получитьсначала получить к нему доступ каким-либо образом)
- нет необходимости передавать его в качестве параметра
Итак, в общем, я склонен использовать DataClass, но я не уверен, потому что я прочитал, что этопредположительно, не очень хороший стиль программирования.
Я хотел бы добавить
- данные, которые должен содержать этот глобальный объект, довольно большие, более 30 тыс. строк / ключей.И это не должно быть очищено на любом этапе, чтобы, когда приложение возвращалось, оно могло зависать из-за этого - как я читал в других местах, например, Singletons vs. Application Context в Android? (3-й ответ)
- это не веб-приложение, я использую только один загрузчик классов
- это многопоточность, но на самом деле только один поток получает доступ к этим данным
- можно, конечно, также использовать этот подход Какобъявлять глобальные переменные в Android? , но не проще ли использовать и обращаться к ObjectClass в этом случае?
- И проверка этого http://developer.android.com/resources/faq/framework.html, esp в разделе "Постоянные объекты" подразумеваетчто в любом случае нет реального преимущества для того или другого в этих случаях.
Большое спасибо