2014-10-21 3 views
0

Привет Я разрабатываю приложение чат для Android (только частный проект)Android, что более эффективно? Скрыть деятельность или начать новый со старыми данными

  • Пользователь имеет список контактов, в которых он может выбрать контакт (назовём эту деятельность contact_activity).
  • Когда он выбирает контакт, следующий активности (позволяет называть его chat_activity) открывается, и там он способен сообщения записи с другими пользователями, но когда пользователь нажимает кнопку назад, и снова восстанавливает то же комнату чата, все от предыдущего активного разговор удален.
  • Я хочу хранить и показывать данные, полученные для , каждый активный разговор, который пользователь вводит, до тех пор, пока он не закрывает разговор вручную или приложение не закрыто.

Какое решение является более оптимальным?

  • Чтобы передать данные от каждого chat_activity обратно contact_activity и затем передать его обратно, когда пользователь «восстанавливает» chat_activity путем создания нового вида деятельности
  • Я слышал о каком-то волшебству стопке деятельности, чтобы свести к минимуму активность , а затем как-то восстановить его с помощью старого контекста данных.

Спасибо за ваши предложения.

ответ

1

Я не знаком с магией вы говорите ...

Но это не деятельность Работа для хранения данных, их работа это показать их.

Решение, я предлагаю, что у вас есть ChatManager, например, и это синглтон. Этот менеджер мог хранить какую-то структуру данных для всех ваших активных чатов [те, которые были открыты с момента открытия приложения], возможно, Map, чей ключ является модельным объектом, представляющим Contact ваш чат, и значение может быть списком Message s, принадлежащих к этой чат-сессии.

Техника «сохранение и восстановление» не предназначена для того, чтобы данные между активностью полностью завершались и открывались позже, она предназначена для хранения данных во время какого-либо изменения конфигурации или из-за того, что ваша деятельность была убита ОС из-за низкая память или что-то в этом роде.

+0

Хорошо, мне удалось создать статическую карту в классе, описывающую contact_activity, индексируя ее с помощью hashcodes contactitem, а затем передавая правильный индекс классу, описывающему chat_acitivty, где я всегда добавляю существующий arrayadapter (лучше сказал мой пользовательский адаптер) в карту с текущим индексом (aka hashcode). Не нужно сохранять целую активность, статическая карта - это ответ. – Smarty77

0

Лучшим решением, на мой взгляд, является сохранение деятельности, а затем восстановление.

При необходимости вы также можете обновить их при восстановлении путем переопределения некоторых методов.

Проверить этот пост для более подробной информации о сохранении деятельности: Saving Android Activity state using Save Instance State