Сохранение контента Android

У меня странная проблема. Как я уже спрашивал в предыдущих постах, в моем приложении много данных, поступающих из NET. Проблема в том, что там много текста и изображений, поэтому я могу заставить пользователя ждать, когда он нажмет элемент списка, но я не хочу заставлять его ждать, когда он нажмет кнопку «Назад».

В том смысле, что я не хочу повторно загружать все данные; загруженные данные 1ce должны остаться.

Какой 1 правильный метод?

1. Используя специальный класс, в котором хранятся все данные... и используя переменные каждый раз, когда я возвращаюсь назад,

or

2. Существует ли какой-либо конкретный метод сохранения экземпляра для сохранения таких данных в самом классе... если да, то сообщите мне, как вызвать сохраненный экземпляр Activity при нажатии кнопки "Назад".


person JaVadid    schedule 31.12.2009    source источник


Ответы (2)


Под «пользователем нажимается кнопка «Назад»» я понимаю, что предыдущее действие отображается и возвращается вверху стека (см. жизненный цикл активности).

Это означает, что эта активность не создается снова, а возобновляется (если только она не была остановлена ​​ядром из-за того, что другим приложениям нужна память), поэтому ее поля и атрибуты сохраняют свои значения. Поэтому, если вы храните свои данные в некоторых полях действий, вы можете получить их значения и отобразить их без повторной загрузки.

Конечно, вы должны протестировать эти поля перед доступом к ним, чтобы избежать NPE в случае первого запуска активности.

person tbruyelle    schedule 31.12.2009

Вы не должны полагаться на какие-либо Activity уже существующие, когда вы запускаете его или возвращаетесь к нему.

Ознакомьтесь с предыдущим вопросом о кэшировании уже загруженных данных:
Что идеальное место для кэширования изображений?

В любом случае у вас не должно быть никаких пауз в пользовательском интерфейсе, когда пользователь вводит Activity; вы должны выполнять всю загрузку в фоновом потоке и показывать пользователю какой-то индикатор прогресса. Если вы этого не сделаете и поток пользовательского интерфейса заблокирован медленной загрузкой (около 15 секунд), пользователю будет представлено диалоговое окно «Приложение не отвечает» и ему будет предложено либо завершить работу вашего приложения, либо продолжать ждать. Нехорошо.

person Christopher Orr    schedule 31.12.2009