Ответ 1
Для более точного ответа вы разместите свой код здесь. Вкл., Память Android ограничена, поэтому VM может удалить любую часть кода, которую он считает ненужным.
Посмотрите на метод жизненного цикла активности, особенно в onResume
, и убедитесь, что вы это прекрасно понимаете. Так много раз при сбоях приложений только для того, чтобы не использовать метод жизненного цикла активности должным образом.
Еще одно важное соображение для Activity - независимо от того, что произошло с данными о сохранении, вы должны показать свой интерфейс с некоторым значением по умолчанию. Итак, предположение такое, если у меня есть данные, которые я покажу, если я этого не сделаю, мне все равно. Пользовательский интерфейс никогда не должен падать с данными или без них. Вы можете использовать String.xml
для хранения некоторого значения по умолчанию или даже в макетах.
если вы все еще хотите пойти с singleton-классом, что совершенно нормально, но убедитесь, что вы выполняете следующую проверку каждый раз, когда пытаетесь получить доступ к вашему singleton.
if (instance==null)
instance=Singleton.getInstance()
ваш метод getInstance()
не только возвращает ваш текущий экземпляр, он также удостоверится, что
- он инициализирует весь объект и переменную
- другие методы singleton как метод экземпляра
Не статически обращаться к данным из одного действия в другое. Это не хорошо для Android специально для проблемы с типом, с которой вы сталкиваетесь сейчас, а также это не очень хорошая практика программирования ООП.
SharedPreference - это хороший способ сохранить данные, если это соответствует вашим требованиям.
если вы хотите передавать данные с разных компонентов Android, таких как Activity, Service или BroadcastReciever, вы можете поместить его внутри пакета и отправить как намерение. И, как всегда, это хранилище данных SQLLite, файл IO и т.д. И т.д.