Как создать глобальную переменную, чтобы сохранить значения в течение всего жизненного цикла приложения, независимо от того, какое действие выполняется.
android
global-variables
D-Man
источник
источник
Ответы:
Вы можете расширить базовый
android.app.Application
класс и добавить переменные-члены следующим образом:В вашем манифесте Android вы должны объявить класс, реализующий android.app.Application (добавьте
android:name=".MyApplication"
атрибут в существующий тег приложения):Затем в своей деятельности вы можете получить и установить переменную следующим образом:
источник
Вы можете использовать
Singleton Pattern
как это:В вашем приложении вы можете получить доступ к вашему синглтону следующим образом:
источник
Эта глобальная переменная работает для моего проекта:
источник
Вы можете использовать настройки приложения. Они доступны из любого действия или фрагмента кода до тех пор, пока вы передаете объект Context, и они являются частными для приложения, которое их использует, поэтому вам не нужно беспокоиться о предоставлении определенных значений приложения, если только вы не имеете дело с маршрутизируемым устройства. Тем не менее, вы можете использовать схемы хеширования или шифрования для сохранения значений. Также эти настройки сохраняются от запуска приложения к следующему. Вот несколько примеров кода, которые вы можете посмотреть.
источник
Есть несколько способов добиться того, о чем вы просите.
1.) Расширьте класс приложения и создайте там экземпляр вашего контроллера и модели.
Затем вы можете в любое время вызвать свой синглтон из пользовательского объекта Application:
2.) Вы можете заставить свой контроллер просто создавать отдельный экземпляр:
Затем вы можете просто вызвать метод create из любого действия или фрагмента, и он создаст новый контроллер, если он еще не существует, в противном случае он вернет ранее существовавший контроллер.
3.) Наконец, в Square создана удобная инфраструктура, которая обеспечивает внедрение зависимостей в Android. Это называется Dagger . Я не буду вдаваться в подробности, как использовать это здесь, но это очень удобно, если вам нужны такие вещи.
Надеюсь, я достаточно подробно рассказал о том, как вы можете делать то, на что надеетесь.
источник
Попробуйте вот так:
Создайте общий класс данных:
SharedData.java
Объявлен / инициализирован экземпляр класса глобально в тех классах, где вы хотите установить / получить данные (используя этот код перед
onCreate()
методом): -Установить данные:
Получить данные:
источник
Вы можете создать
Global Class
так:Затем определите это в манифесте:
Теперь вы можете установить значения для глобальной переменной следующим образом:
Вы можете получить эти значения следующим образом:
Пожалуйста, найдите полный пример из этого блога Глобальные переменные
источник
источник
Я проверил на аналогичный ответ, но приведенные здесь не соответствуют моим потребностям. Я нахожу то, что, с моей точки зрения, это то, что вы ищете. Единственная возможная черная точка - это вопрос безопасности (а может и нет), так как я не знаю о безопасности.
Я предлагаю использовать интерфейс (не нужно использовать Class с конструктором и т. Д.), Так как вам нужно только создать что-то вроде:
Затем вы можете получить доступ ко всем в ваших классах, используя следующее:
источник
Технически это не отвечает на вопрос, но я бы рекомендовал использовать базу данных Room вместо любой глобальной переменной. https://developer.android.com/topic/libraries/architecture/room.html Даже если вам «просто» нужно хранить глобальную переменную, и это не сложно, а что нет, но использование базы данных Room является наиболее элегантным , родной и хорошо поддерживаемый способ сохранения ценностей в течение жизненного цикла деятельности. Это поможет предотвратить многие проблемы, особенно целостность данных. Я понимаю, что база данных и глобальные переменные разные, но, пожалуйста, используйте Room для обслуживания кода, стабильности приложения и целостности данных.
источник
Используйте SharedPreferences для хранения и извлечения глобальных переменных.
источник
Если возможно, вы должны объявить переменные, которые вам нужны, чтобы они оставались в живых, которые не были очищены сборщиком мусора или выгружены ОС в файл .so загрузить его в свой MainActivity.
источник
static
переменные Java .источник
Легко!!!!
Те переменные, к которым вы хотите обращаться как к глобальным переменным, вы можете объявить как статические переменные. И теперь вы можете получить доступ к этим переменным с помощью
classname.variablename;
}
MyProperites.someValueIWantToKeep;
Это оно! ;)
источник
synchronized
статическое,getInstance()
а другие нет. проголосовал соответственно.