2017-01-15 2 views
0

Мое приложение изначально делает запрос на список объектов с сервера. Эти объекты в настоящее время хранятся в памяти как ArrayList<MyObject>. Тем не менее, я хочу, чтобы эти объекты передавались через несколько действий, прежде чем пользователь завершит поток, нажав кнопку. I мог сделать сериализуемым ArrayList и передать его с помощью опций Intent. Но я мог бы также хранить MyObject (ы) в базе данных SQLite и получать доступ к ним/изменять их в любой Деятельности без необходимости идти, хотя и намерен. Мне было интересно, какова норма для этого.Сохранение общих значений в базе данных SQLite против прохождения через

EDIT: забыл упомянуть, что все значения будут удалены после завершения пользователем потока.

+0

Вам нужен весь аррайалист, который будет проходить между мероприятиями? Или вы проходите только один объект за раз? Например, если одно действие отображает весь список, а другой отображает сведения об одном щелкнутом элементе, вам действительно не нужно передавать весь arraylist –

+0

Да, у меня есть специальный прецедент для этого. Я показываю некоторые данные по-другому в другой деятельности. –

+0

Возможно, вы можете содержать весь поток в одном действии с несколькими фрагментами. Затем каждый фрагмент может получить значения, вызвав его активность. – Karakuri

ответ

1

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

  1. Pass Serializable так, как вы описали. Может быть медленнее, чем другие альтернативы, хотя

  2. сделать MyObject осуществлять Parcelable и использовать [intent.putParcelableArrayListExtra()] (https://developer.android.com/reference/android/content/Intent.html#putParcelableArrayListExtra(java.lang.String, java.util.ArrayList))

  3. Продлить Application и загрузить список из сети в вашем Application.onCreate() и позвоните по номеру getList(). Таким образом вы загружаете его один раз, и вам не нужно передавать его между различными видами деятельности.

+0

Спасибо, я рассмотрю Parcelable. Какие-либо предсказуемые недостатки? –

+0

Если вы используете Android Studio, это очень просто. Просто включите все свои поля объектов в методы 'MyObject (Parcel in)' и 'writeToParcel (Parcel out, int flags)'. –

+0

Я фактически только что реализовал это, и он отлично работает, спасибо! –