Страница 1 из 1

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

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

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

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

Добавлено: 24 сен 2015, 14:23
doter.ua
Если передача одноразовая то можно и джейсоном через интент, а если обмен будет частым, то стоит задуматься о БД или SP.

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

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

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

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

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

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

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

Добавлено: 24 сен 2015, 16:36
Foenix
через интернет еще передать можно :mrgreen:

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

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

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

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