Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
#1

Как сбрасывать статические переменные после запуска?

16.01.2015, 17:02. Просмотров 648. Ответов 2
Метки нет (Все метки)

Здравствуйте!
Не первый месяц мучаюсь, приходилось откладывать.
А активностях и фрагментах создаю статическую переменные, требуется то позицию в списке запомнить, то выбор города и т.п. Проблема в том, что после выхода из приложения и запуска заново или даже просто при повторном открытии фрагмента эти самые статические переменные не обнуляются.
И ладно бы при перезапуске фрагмента, так и после открытия программы все статические переменные восстанавливают значения на момент выхода. Дико неудобно! А главное, везде, где я пытался поискать, указано, что в Java статические переменные существуют только во время работы программы и затем обнуляются. Люди даже специально через SharedPreferences их пытаются сохранить.
Сделал новый проект, добавил туда статическую переменную - и то же самое.
Приходится в начале работы программы принудительно обнулять все статические переменные.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2015, 17:02
Ответы с готовыми решениями:

Как исправить ошибки после запуска в Android studio
Вот картинка помогите пожалуйста!...

Эмулятор исчезает сразу после запуска
Запускаю в Android Studio эмулятор, окно открывается на пару секунд и исчезает....

Выполнение действия сразу после запуска активити
Ситуация такова. Есть Активити в активити лежит TabLayout +ViewPager в который...

Приложение крашится на старте после первого нормального запуска
Когда я первый раз устанавливаю приложение на емулятор то оно работает и можно...

После запуска приложения запускать не главное активити, а сервис
как сделать чтобы после запуска приложения запускалось не главное активити а...

2
Gabberr
103 / 103 / 19
Регистрация: 13.10.2009
Сообщений: 404
16.01.2015, 17:25 #2
Очень не желательно пользоваться статическими переменными, если только не реализуешь синглтон, особенно нельзя создавать статические ссылки на вью элемены, активити, фрагменты.
Время жизни статических переменных привязывается к времени жизни приложения и соответственно память из-под них освободиться тогда, когда виртуальная машина выкинет из памяти ваше приложение, а если, например, крутиться сервис, то произойти это может не скоро, переменные будут висеть и отжирать память...
Пользуйтесь стандартными средствами андроида, если нужно сохранить состояние - SharedPreferences, передать данные - Intent, итд.
1
CoolMind
421 / 404 / 65
Регистрация: 06.10.2012
Сообщений: 1,732
16.01.2015, 17:52  [ТС] #3
Gabberr, спасибо за информацию. Странно, у меня такое поведение программы обычно даже после перезагрузки. Я сохраняю, как правило, целые числа и строки. Например, пользователь что-то пишет в строке поиска, переходит в другой фрагмент, потом возвращается - я восстанавливаю значение поиска. Да, можно через SharedPreferences.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2015, 17:52

Android Studio - в проекте пропал класс после запуска приложения
Здравствуйте, писал приложение и потребовалось создать новый класс. Создал, и...

После повторного вызова фрагмента переменные становятся null
Первый раз фрагмент вызывается в методе onCreate, и все нормально выводиться....

Как правильно объявлять и использовать статические переменные в Lazarus
Эта тема уже обсуждалась применительно к Delphi...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru