2015-10-19 2 views
0

У меня есть MainActivity, который извлекает большое количество данных с веб-сервера с помощью Retrofit. Эти данные отображаются в виде ресайклера.Как делиться большим количеством данных между действиями?

Теперь я хочу иметь другое действие, которое работает с одним и тем же набором данных. Каков наиболее эффективный способ сделать это? Раньше я делал это, используя статический Controller, который отслеживает данные, но я продолжаю слышать много критики о статических контейнерах, подобных этому. Передача данных в намерениях не является оптимальной, так как данные довольно сложны, и их так много.

Оптимально, я хотел бы иметь возможность модифицировать набор данных в любом из видов деятельности, чтобы изменения отражались и на другой деятельности.

+0

Не думаете ли вы, что было бы лучше использовать БД для этого ?. Что-то быстрое, например SnappyDB. В противном случае вы можете использовать статические переменные, но это плохо. Передача списка будет проще с помощью использования Serialization или Parceable, но это может стать обузой большого набора данных. – Smashing

+0

@Smashing. Данные не должны быть постоянными - он существует только для срока службы приложения. Данные уже находятся в памяти, поэтому самый быстрый способ - просто передать его второму действию. – manabreak

+0

передают данные как 'ArrayList <>' для другого действия и получают данные с помощью 'getIntent(). GetSerializableExtra' использует метод литья типа в соответствии с типом' ArrayList <> ', который вы передали –

ответ

2

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

  1. Вы можете расширить класс приложений включить глобальные данные между вашими действиями. Вы можете узнать больше об этом здесь: http://www.helloandroid.com/tutorials/maintaining-global-application-state

  2. Вы можете использовать хранилище с сохранением состояния (то есть sqlite/file).

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

Смежные вопросы