Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
#1

Кто как передаёт коллекции между активностями, классами? - Программирование Android

09.02.2016, 14:55. Просмотров 506. Ответов 16
Метки нет (Все метки)

Всем привет!
Поделитесь опытом. Допустим, в одном классе вы накапливаете данные (ArrayList), в другой передаёте. Там можете вывести в ListView, добавить новые данные или провести какие-то манипуляции. Может быть, использовать их где-то ещё. Данные между активностями можно передавать, например, через Intent и startActivity. Можно хранить в другом классе (который становится singleton'ом) и брать оттуда. Можно использовать EventBus.
Кто как делает?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2016, 14:55     Кто как передаёт коллекции между активностями, классами?
Посмотрите здесь:
Переход между активностями! Android
Android Затруднение с переключением между активностями
Передача значений между активностями Android
Передача данных между активностями Android
Android MediaPlayer, рывок перезапуска музыки при переходе между активностями
Android Передача значений между классами
Android Передача переменных между классами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,078
Записей в блоге: 18
Завершенные тесты: 1
09.02.2016, 15:02     Кто как передаёт коллекции между активностями, классами? #2
В основном через Intent, пару раз еще с Parsel
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 433
09.02.2016, 16:33     Кто как передаёт коллекции между активностями, классами? #3
SharedPreferences. Я иногда использую кастомный который работает по такому же принципу.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.02.2016, 16:40  [ТС]     Кто как передаёт коллекции между активностями, классами? #4
DemD10, кстати, да, у меня в одной из программ тоже есть такой способ. Правда, не знаю, насколько он быстр. Зато помогает не потерять данные, если что.
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 581
09.02.2016, 16:49     Кто как передаёт коллекции между активностями, классами? #5
Объекты в ArrayList implements Parcelable, через intent.
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 433
09.02.2016, 17:00     Кто как передаёт коллекции между активностями, классами? #6
CoolMind, ну а чем он не быстр если это простые формы данных.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.02.2016, 17:25  [ТС]     Кто как передаёт коллекции между активностями, классами? #7
DemD10, SharedPreferences? Насколько я помню, предполагается запись в соответствующий файл, что медленнее, чем просто передача в памяти. Но способ хороший, когда надо хранить всевозможные промежуточные состояния.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
09.02.2016, 17:53     Кто как передаёт коллекции между активностями, классами? #8
CoolMind, самый лучший способ передавать именно массивы данных - через интент. Т.к. когда данных много sharedPreferences будет тормозить (будет заметно при запуске новой активити). Еще плюс ко всему этому, все что было передано в интенте будет сохранено даже после выгрузки приложения из памяти (не видел где это описано, узнал с помощью тыка). Ну а если данных прям вообще ооочень много и нужно их хранить долго - лучше в бд, т.к. работает намного быстрее sharedPreferences и возможностей больше.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.02.2016, 18:23  [ТС]     Кто как передаёт коллекции между активностями, классами? #9
Spelcrawler, да, про БД согласен. Хотел у вас спросить,
Цитата Сообщение от Spelcrawler Посмотреть сообщение
все что было передано в интенте будет сохранено даже после выгрузки приложения из памяти
относится ко всему приложению или выгрузке одной активности?
Мне раньше казалось, что так в Андроиде действуют только статические переменные.
Spelcrawler
525 / 495 / 111
Регистрация: 12.03.2014
Сообщений: 1,647
Завершенные тесты: 1
09.02.2016, 18:26     Кто как передаёт коллекции между активностями, классами? #10
Цитата Сообщение от CoolMind Посмотреть сообщение
относится ко всему приложению или выгрузке одной активности?
Я тестировал через студию, там слева от logcat есть панель инструментов (там где скриншот можно сделать) в этой панели есть красный крестик - он убивает приложение насовсем, так же как система при нехватке ресурсов. При таком завершении все данные, которые были в интенте последней запущенной активити, сохранялись. Другие ситуации не тестил, но конечно, если руками закрыть или перезагрузить устройство уже ничего не сохранится, а запустится новый инстанс приложения.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
09.02.2016, 18:48     Кто как передаёт коллекции между активностями, классами? #11
Serializable
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
09.02.2016, 19:13  [ТС]     Кто как передаёт коллекции между активностями, классами? #12
YuraAAA, не так давно читал, что Serializable имеет преимущество по скорости перед Parcelable, если прописывается вручную (с созданием соответствующих классов). Вы тоже так считаете?
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,070
10.02.2016, 08:07     Кто как передаёт коллекции между активностями, классами? #13
Выгрузка приложения из памяти не означает очистку кэша, имхо. Возможно поэтому данные интента и сохраняются.
YuraAAA
1565 / 1307 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
10.02.2016, 11:53     Кто как передаёт коллекции между активностями, классами? #14
CoolMind, а что значит с созданием соответствующих классов?
Parcelable будет быстрее, чем Serializable.
Но вот тут становится вопрос, сколько данных мы передаём. Если это объект, список из небольшого количества объектов, но зачем нам возня с Parcelable. А вот если количество объектов очень большое, то Parcelable будет ощутимо быстрее.

Тесты в миллисекундах
http://www.3pillarglobal.com/sites/d...parcelable.JPG
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
10.02.2016, 12:20  [ТС]     Кто как передаёт коллекции между активностями, классами? #15
YuraAAA, сходу не нашёл ссылки, где я это прочитал. Конечно, почти 100% статей говорят о том, что Parcelable быстрее, и эта разница только увеличивается с объёмом данных. Ещё дома поищу.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
12.02.2016, 00:24  [ТС]     Кто как передаёт коллекции между активностями, классами? #16
YuraAAA, https://bitbucket.org/afrishman/andr...ializationtest
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2016, 14:21     Кто как передаёт коллекции между активностями, классами?
Еще ссылки по теме:
Android Работа с активностями
Кто как работает удалённо? Android
Бредни с классами Android
Кто знает как отследить button.setOnClickListener? Android
Android Использование ресурсов классами

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
06.05.2016, 14:21  [ТС]     Кто как передаёт коллекции между активностями, классами? #17
YuraAAA, случайно нашёл оригинал ответа на SO, откуда взял ссылку выше:
http://stackoverflow.com/a/29331460/2914140. Правда, сам не тестировал, но тогда зацепило.
Yandex
Объявления
06.05.2016, 14:21     Кто как передаёт коллекции между активностями, классами?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru