ИМХО, всегда существуют недостатки в использовании шаблона проектирования Singleton в ваших приложениях.Некоторые из них (от верхней части моей головы):
- Связь между иначе связанных объектов и потоков через экземпляр Синглтон
- появление «глобального государства», что делает отладки намного сложнее
- Неумение для издевательства статических полей и методов с помощью «обычных» издевательств
- Тот факт, что ссылка на Singleton может быть легко получена в любой части приложения, приводит к полному беспорядку (люди перестают думать о графике зависимостей)
- Одиночные игры имеют тенденцию породы: вы вводите один, затем руга один, то вы оказываетесь с 10 одиночек, которые держат состояние приложения в «глобальном облачном состоянии»
Обратите внимание, что то, что вы пытаетесь сделать, это против Android принципов - если пользователь нажимает на «назад ", то он должен найти предыдущие Activity
или Fragment
в том же состоянии, в котором он был в последний раз, когда пользователь увидел его, без каких-либо дополнений (если вы явно не хотите сохранять его в back-stack).
Если вы все еще хотите это сделать, то я мог бы предложить несколько вариантов:
- Используйте
SharedPreferences
и хранить значение там. Получите значение в каждом Activity
и запишите его в onResume()
- Используйте
startActivityForResult()
звонок, чтобы начать новый Activities
и передать значение обратно в результат. Обратите внимание, что по умолчанию нажмите «назад», отменяет действие, поэтому вам придется переопределить метод onBackPressed()
.
- Переопределить метод
onBackPressed()
в Activity
таким образом, чтобы он начинал с другого Activity
(вместо того, чтобы просто вытаскивать задний стек) и передать значение в используемом вами Intent
. В этом случае вы можете использовать FLAG_ACTIVITY_CLEAR_TOP.
- Используйте некоторую шину событий, которая поддерживает «липкие» события. Когда пользователь вводит текст, вы отправляете липкое событие в шину событий. В
onResume()
из Activity
вы проверяете, существует ли событие этого типа, а если оно есть - вы обновляете интерфейс.
Еще раз - факт, что вы МОЖЕТЕ делать то, что вы хотите, не означает, что ДОЛЖЕН быть выполнен.
Вы хотите сохранить текст edittext до выхода приложения? – sasikumar
Статические поля получают нуль, если ваше приложение будет разбито между ними или произойдет какое-либо неожиданное действие! Лучшее решение - использовать класс Application. Создайте переменную и создайте 2 метода для сохранения и получения этой переменной. – Jai