Android - сохранить состояние активности и элементы списка - PullRequest
0 голосов
/ 23 октября 2011

У меня сейчас есть listview, который сам заполняется пользователем. Мне бы хотелось, чтобы, когда пользователь покидает активность и возвращается, все добавленное пользователем все еще находится в listview. Я читал о onSaveInstanceState, но я не знаю, является ли это правильным способом сделать это. Любая помощь будет принята с благодарностью. Благодарю.

Ответы [ 3 ]

0 голосов
/ 24 октября 2011

Я предполагаю, что если пользователь заполняет некоторые данные, то эти данные где-то хранятся (SQLite, облако и т. Д.).Я рекомендую агрессивно хранить все, что пользователь вводит (т. Е. Как только они нажимают «новый» и вводят новый элемент списка, отправляют в базу данных и обновляют список).Поэтому, когда вызывается приложение onResume (), вы можете получить данные из их источника и заново заполнить представление списка.Временное сохранение в SharedPreferences звучит громоздко (для списка элементов).

0 голосов
/ 24 октября 2011

Если действие не уничтожено между отправкой и возвратом, тогда ваши данные должны быть там, где их оставил пользователь (если только вы не выполните некоторую повторную инициализацию при возобновлении). Однако вы не можете рассчитывать на это, поскольку Android может высвободить ресурсы, когда это необходимо, и неактивные Действия могут стать жертвой такого действия.

Поэтому вы должны - как уже упоминалось - сохранить ваши данные в постоянном хранилище. Если это только для этого действия, и это только небольшой объем данных, то SharedPreferences является хорошим и простым решением. Сохраните в onPause (), загрузите в onResume (), и вы потеряете данные только тогда, когда телефон умирает с вашей активностью сразу.

Я бы не рекомендовал использовать файлы для этого, но если ваши данные должны быть доступны для разных представлений, обработаны, отсортированы, отфильтрованы и т. Д., Чем вы можете подумать о SQLite.

0 голосов
/ 23 октября 2011

Это не совсем то, что вам нужно; onSaveInstaceState сохраняет экземпляр до того, как система убьет вашу активность для восстановления ресурсов (нехватка памяти), а не в том случае, если пользователь явно ее покидает.

Если вы хотите сохранить состояние активности, чтобы при каждом входе пользователя оно оставалось прежним, вы должны сохранить данные в файле / общих настройках / с использованием контент-провайдеров. Если все, что вы хотите сделать, это сохранить локальные данные элементов одного списка, я рекомендую использовать Shared Preferences, поскольку это очень просто и интуитивно понятно. Читайте о них здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...