Передача объектов между activity

Ответить
EspanaMia
Сообщения: 24
Зарегистрирован: 10 янв 2014, 11:03

Передача объектов между activity

Сообщение EspanaMia » 24 сен 2015, 12:04

Существует несколько способов передачи объекта между activity:
1. через intent - используя сериализацию (при этом у нас создаётся новый объект => нужно его вернуть обратно, чтобы обновить старый): startActivityForResult...
2. через БД (как вариант ORM)
3. через sharedPreference (переводя объект в строку, например через GSON)
4. через объявление объекта статик или через класс Application (но тогда есть риск, что объект обнулится со временем)

Подскажите, какой наиболее правильный способ передачи ?

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

Re: Передача объектов между activity

Сообщение doter.ua » 24 сен 2015, 14:23

Если передача одноразовая то можно и джейсоном через интент, а если обмен будет частым, то стоит задуматься о БД или SP.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.

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

Re: Передача объектов между activity

Сообщение Mikhail_dev » 24 сен 2015, 15:13

Всё естественно зависит от задачи.
1. У вас объект может меняться в обоих Acitvity?
2. Кэш должен жить после выгрузки приложения?
3. На сколько критичны эти данные (можем ли мы их потерять по какой-либо причине) ?
4. Как часто будет производиться это действие?
5. Как много таких объектов в системе?
6. На сколько сложна их структура? (1 поле строковое к примеру или вполне себе нормальный объект)
?

EspanaMia
Сообщения: 24
Зарегистрирован: 10 янв 2014, 11:03

Re: Передача объектов между activity

Сообщение EspanaMia » 24 сен 2015, 15:30

1. да, точнее в 5-ти activity.
2. кэш не нужен и видимо в случае использования БД/SP, придётся чистить все таблицы/записи при выходе из приложения.
3. данные крайне важны именно во время работы приложения, потерь не должно быть.
4. действие производится не часто.
5. объектов около 15.
6. структура: у каждого в ~10 переменных + несколько вложенных классов.

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

Re: Передача объектов между activity

Сообщение Mikhail_dev » 24 сен 2015, 16:00

Как вариант можете его сериализовать и сохранять во внутреннюю память. Если
через intent - используя сериализацию (при этом у нас создаётся новый объект => нужно его вернуть обратно, чтобы обновить старый)
А зачем вам старый обновлять, если вы всё равно на той активити не находитесь? Если потом идёт возврат, то можете как выше написал, сохранять во внутреннюю память. Но нужно быть готовым к тому, что данные сохранятся в памяти телефона. Если это нельзя делать, то гоняйте его как сериализованный объект. Сериализация конечно медленно, но в вашей задаче она редкая, поэтому не критично.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Передача объектов между activity

Сообщение Foenix » 24 сен 2015, 16:36

через интернет еще передать можно :mrgreen:
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

EspanaMia
Сообщения: 24
Зарегистрирован: 10 янв 2014, 11:03

Re: Передача объектов между activity

Сообщение EspanaMia » 24 сен 2015, 16:59

а если использовать статик + SharedPreference? т.е. при обращении к объекту проверять его на null, если true - то загрузить его с SP и соответственно при каких либо изменениях объекта сохранять его в SP.

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

Re: Передача объектов между activity

Сообщение Mikhail_dev » 24 сен 2015, 17:28

А зачем тогда вообще статики? Проще сохранять сразу в SP и сразу оттуда грузить. Но опять же, может остаться информация после выгрузки приложения.

Ответить