Лучший способ пересылать объекты в intent и bundle

SQLite, Preferences, файлы, SD, Content Provider, XML, JSON
Ответить
Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Лучший способ пересылать объекты в intent и bundle

Сообщение Fry » 10 апр 2015, 10:56

Какой способ лучше для передачи объектов между активити и фрагментами?

Способы, которые знаю я.

1. Паковать в Parcelable.
+ Работает быстро
- Относительно много кода.
- Меняется объект, и Parcelable конструкции нужно также менять.

2. Сериализовать в json, потом передавать в качестве строки, затем десереализовывать. Имхо удобнее всего Gson.
+Мало кода, очень наглядно.
- Не понятно, на сколько эффективно.
- Не понятно, что с ограничениями по длинам строк при передча больших объектов.

3.Serializable. Проще, чем Parcelable, но работает вроде как сильно медленнее. На сколько я знаю, не рекомендуется для Android.

4. Вообще использовать стороннюю либо, типа EventBus. Которые передают объекты по-своему.
+ ?
- ?

Что думаете, какой способ лучше?
Arbeit macht Fry

Аватара пользователя
doter.ua
Сообщения: 1106
Зарегистрирован: 23 ноя 2013, 16:08
Откуда: Ukraine

Re: Лучший способ пересылать объекты в intent и bundle

Сообщение doter.ua » 10 апр 2015, 12:01

Между активити и фрагментами:
1) паблик методы\переменные.
2) интерфейсы.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Лучший способ пересылать объекты в intent и bundle

Сообщение Fry » 10 апр 2015, 12:59

Вопрос не совсем в этом, а скорее в технологии упаковки объектов.

ЗЫ. С паблик методами при передачи из активити во фрагмент я сталкивался с такой проблемой, что данные передавались, а View еще не было готово, и вылетал NullPointerException. Это происходило, например, при смене фрагменте в активити и необходимости посылать данные в новосозданный фрагмент. Тогда решал проблему через статический newInstance, который, кстати, использует Bundle, в который как раз и нужно упаковывать объекты. Вопрос в том, как лучше.
Arbeit macht Fry

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Лучший способ пересылать объекты в intent и bundle

Сообщение Mikhail_dev » 10 апр 2015, 18:08

Если какие-то данные необходимо использовать во многих частях программы, то делать кеш, который будет доступен всем (синглтон). Либо можно базу.
Если объектов мало или запросы к ним редки, то можно и через Bundle передавать в любом виде, ибо всё равно редко передаются

Аватара пользователя
Fry
Сообщения: 183
Зарегистрирован: 07 дек 2013, 22:07

Re: Лучший способ пересылать объекты в intent и bundle

Сообщение Fry » 11 апр 2015, 15:37

Mikhail_dev писал(а):Если какие-то данные необходимо использовать во многих частях программы, то делать кеш, который будет доступен всем (синглтон).
А данные хранить в качестве полей этого синглтона?
Arbeit macht Fry


Ответить