2016-03-17 3 views
1

Я внедрил onSaveInstanceState и onRestoreInstanceState в свою деятельность в андроиде.Как я могу заставить вызов onSaveInstanceState

Они, кажется, работает нормально, но я хотел бы, чтобы явно сохранить состояние экземпляра, когда некоторые вещи случаются (например, когда пользователь нажимает кнопку) в случае сбоя приложения, или я прекратить его с помощью отладчика

Я могу вызывать метод, очевидно, но это не дает правильного Bundle или чего-то еще.

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

Если нет, может ли кто-нибудь предложить достойное решение для сохранения состояния активности в определенных точках в случае сбоя/завершения?

Благодаря

+3

Сохранение пакета в общих предпочтениях? – Wazaaaap

+1

Вы пробовали просто держать Bundle в качестве поля? –

ответ

2

Связки сохраняется только в памяти, что означает, что даже если удастся поместить данные в Узел он уже не будет, если ваши сбои приложений.

Я предлагаю вам использовать onSaveInstanceState для того, для чего он предназначен - для восстановления состояния Activity в активном процессе. Если вы хотите сохранить некоторую информацию, чтобы она не потерялась, если в результате сбоя приложения вы должны использовать один из постоянных storage options.

В идеале у вас будет класс модели для данных, которые вы показываете. Вы можете сохранить модель с помощью SQLite и некоторых DAO library. Когда вы это сделаете, вы сможете восстановить из базы данных в onCreate вашего Activity.

В зависимости от сложности информации вы также можете выбрать Shared Preferences. Если у вас есть только несколько пар ключей, это хороший выбор, и вам не нужно использовать модели.