#android
#Android
Вопрос:
У меня есть HomeActivity, который содержит RecyclerView, показывающий загрузку данных из Firebase, но когда нажимаются элементы и возвращается HomeActivity, приложение перезагружает данные из Firebase. Я хочу, чтобы данные держателя возвращались к HomeActivity (данные списка помещаются в CustomAdapter).
Ответ №1:
Если вы снова обращаетесь к Homeactivity через startActivity()
, или вызываете finish()
, или onDestroy()
в Homeactivity, есть 3 варианта:
- Вам необходимо сохранить данные в базе данных с помощью
SqliteOpenHelper
. Отображение данных путем извлечения их из базы данных вместо Firebase - Сохранение данных в кэше. К кэшированным данным можно повторно обращаться без их сохранения. Длительность и размер кэша должны определяться вами.
- Храните данные в общих настройках, к которым можно получить доступ при повторном открытии действия.
При использовании любого из трех методов вам необходимо указать, когда приложение должно подключиться к firbase для получения новых данных. Вы можете настроить уведомление gcm, чтобы сообщить приложению, что новые данные доступны, или назначить время, по истечении которого приложение попытается проверить, доступны ли новые данные, и попытаться загрузить их.
HomeActivity по умолчанию будет находиться в activityStack, поэтому, если в NextActivity нажата обратная кнопка, HomeActivity откроется как таковой.
savedInstanceState
работает для изменения конфигурации (т. Е. поворота и т. Д.). Вам нужно будет переопределить OnSaveInstanceState
, OnCreate
чтобы предотвратить удаление всех данных. Но если вы снова обращаетесь к Homeactivity через startActivity()
, или вызываете finish()
, или onDestroy()
внутри HomeActivity, эти данные будут потеряны.
Комментарии:
1. Могу ли я использовать savedInstanceState для сохранения данных?
2. Вы просто пытаетесь выполнить обратное нажатие или запускаете startActivity? Если вы выполняете startactivity, вам придется использовать один из вышеперечисленных вариантов, при обратном нажатии состояние активности в любом случае сохраняется, если не удалено
3. Если я использую любой из трех методов, я проверяю, должно ли приложение подключаться к firebase для получения новых данных и повторного обновления данных? Здесь я хочу, чтобы при запуске приложения или при обновлении я получал данные из Firebase и показывал HomeActivity?
4. @suku как насчет того, чтобы действие было воссоздано из-за изменения ориентации? лучшим решением для этого было бы onSaveInstance и восстановление данных onCreate.
5. @k0sh, я думаю, я переформулирую ответ, чтобы устранить путаницу