Android: лучше ли использовать Bundle или другой класс для сохранения данных? - PullRequest
0 голосов
/ 03 октября 2018

Мне интересно, лучше ли использовать Bundle или создать другой класс целиком для сохранения данных?

Во время изменения фрагмента я могу настроить его так, чтобы onSaveInstanceState () сохранял информацию.Кроме того, я мог бы сохранить эту информацию как статическую переменную в другом классе, а затем создать функцию получения в этом классе и использовать ее для «восстановления» состояния переменных в onCreateView ().

Я бы предпочел использоватьдругой класс, поскольку я чувствую, что у меня больше контроля над управлением моими данными, но я не уверен, вызовет ли это какие-либо проблемы или это плохая практика, так как я не видел упоминаний о том, что люди делают это таким образом.

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Если вы хотите сделать это по-своему, вам все равно придется использовать хотя бы один из методов сохранения данных.Если вы не используете традиционные методы, вы будете тратить ресурсы, что является плохой практикой.Пожалуйста, изучите следующие сценарии:

  1. Если вы хотите сохранить состояние активности без использования onSavedInstanceState () или SharedPreferences, как бы вы это сделали?Если вы пишете класс для этого, вы фактически изобретаете колесо.

  2. Если вы хотите использовать базу данных, как бы вы это сделали?

Итак, Bundle - это просто контейнер, который охватывает данные, т.е. объект, строку, int и т. Д., Так что он может быть сохранен либо временно, либо постоянно.

У вас есть контроль над данными, но вы не понимаете, какэти методы сохранения данных работают.

Обратите внимание, что пакет - это не способ сохранения данных, а способ контейнерирования наборов данных, чтобы его можно было сохранить как один

0 голосов
/ 03 октября 2018

Бандл.Зачем?Потому что ваше приложение может быть убито.Например, пользователь может перейти от вашего приложения к другому.В это время ваше приложение может быть убито за ресурсы.Затем они могут попытаться вернуться в ваше приложение через меню последних.Если вы сохранили его в комплекте, пакет будет сохранен.Если вы записали его в static, эти данные будут потеряны.

Допустимо передать Bundle в конструктор внешнего класса, чтобы инициализировать себя из этого состояния и передать сохранение состояния вэтот класс тоже.Во многих отношениях это лучшее из обоих миров.

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