Задать вопрос

Как организовать хранение и передачу данных в приложении между Activity?

Есть несколько Activity, каждое принимает у пользователя данные.
На первом вводится имя, на втором дата, на третьем вводится еще какая-нибудь информация.
На последнем экране вся собранная информация отправляется на сервер.
Как правильно хранить эту временную информацию?
Из-за большого количества переходов - Putextra не подходит.
Думал использовать временную таблицу в sqlite, но засомневался.
Сейчас использую класс Application, все данные хранятся в свойства этого класса.
Как все-таки правильно?
  • Вопрос задан
  • 3700 просмотров
Подписаться 6 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
@Copperfield
Android dude
1) Можно сделать 1 активити и 4 фрагмента.
2) Можно получаемые данные представить в виде класса, и при каждом интенте на новое активити передавать seriazable объект.
Ответ написан
@linreal
Можно временно хранить в преференсах, и чистить их после отправки.
Ответ написан
Комментировать
@Normanns
Учитывая, что юзер может не дойти до конца цепочки окон сразу, то риск того, что процесс умрет существует, а значит, что на одном из окон (в случае хранения данных в синглтоне или Application) приложение потеряет данные с предыдущих форм.
Временная таблица тоже не подойдет - если процесс будет убит, то и подключение к базе будет оборвано, а вместе с ним и временные таблицы.
При это юзер, возвращаясь в приложение, будет видеть то же Активити, на котором остановился.
Поэтому нужно либо запускать весь процесс заного, либо хранить информацию на внутренней памяти телефона (тут уже как удобнее, но я бы рекомендовал preferences, в силу легкости использования и перезаписи данных).
Ответ написан
Комментировать
@Bolloky
Вполне можно гонять один и тот же Bundle. Это не трудозатратно и защитит от выгрузки, так как приложение запустится с того же места с тем же Intent.
Bundle data = getIntent.getExtras();
data.putString( "param100500", "ДЖИГУРДА" );
Intent intent = new Intent( this, Activity100501.class );
intent.putExtras( data );

В дополнение к этому для надёжности можно унаследовать все Activity от родителя, где в методе onPause() ваш Bundle будет сохраняться в Preferences, а в onCreate восстанавливаться при savedInstanceState == null.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы