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

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

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

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

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

Всем привет!
Поделитесь опытом. Допустим, в одном классе вы накапливаете данные (ArrayList), в другой передаёте. Там можете вывести в ListView, добавить новые данные или провести какие-то манипуляции. Может быть, использовать их где-то ещё. Данные между активностями можно передавать, например, через Intent и startActivity. Можно хранить в другом классе (который становится singleton'ом) и брать оттуда. Можно использовать EventBus.
Кто как делает?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2016, 14:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Кто как передаёт коллекции между активностями, классами? (Программирование Android):

Переход между активностями! - Программирование Android
не могу перейти между активностями! вот весь лог 12-27 14:32:51.611: D/dalvikvm(330): GC_EXTERNAL_ALLOC freed 83K, 51% free...

Передача данных между активностями - Программирование Android
к примеру есть 2 активности первая public class first_act extends Activity { @Override protected void onCreate(Bundle...

Передача значений между активностями - Программирование Android
Добрый день. Как можно передавать значения переменных между активностями? У меня задача такая: имею четыре активности, одна это заголовок,...

Затруднение с переключением между активностями - Программирование Android
Чтобы лучше понимать решил написать приложение расписания пар в университете и наткнулся на одну проблему. Создал одну активность в которой...

MediaPlayer, рывок перезапуска музыки при переходе между активностями - Программирование Android
Всем привет, есть приложение с несколькими активностями и при переходе между ними заметен рывок перезапуска музыки (onResume). Как сделать...

Передача значений между классами - Программирование Android
Как передать значение int-овой переменной из одного класса в другой? Всё было бы просто если оба класса были унаследованы от Activity....

16
chizz
980 / 495 / 54
Регистрация: 19.03.2013
Сообщений: 3,093
Записей в блоге: 18
Завершенные тесты: 1
09.02.2016, 15:02 #2
В основном через Intent, пару раз еще с Parsel
1
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 439
09.02.2016, 16:33 #3
SharedPreferences. Я иногда использую кастомный который работает по такому же принципу.
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
09.02.2016, 16:40  [ТС] #4
DemD10, кстати, да, у меня в одной из программ тоже есть такой способ. Правда, не знаю, насколько он быстр. Зато помогает не потерять данные, если что.
0
_Night_Scream_
75 / 74 / 8
Регистрация: 08.08.2013
Сообщений: 590
09.02.2016, 16:49 #5
Объекты в ArrayList implements Parcelable, через intent.
1
DemD10
58 / 47 / 12
Регистрация: 03.09.2013
Сообщений: 439
09.02.2016, 17:00 #6
CoolMind, ну а чем он не быстр если это простые формы данных.
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
09.02.2016, 17:25  [ТС] #7
DemD10, SharedPreferences? Насколько я помню, предполагается запись в соответствующий файл, что медленнее, чем просто передача в памяти. Но способ хороший, когда надо хранить всевозможные промежуточные состояния.
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
09.02.2016, 17:53 #8
CoolMind, самый лучший способ передавать именно массивы данных - через интент. Т.к. когда данных много sharedPreferences будет тормозить (будет заметно при запуске новой активити). Еще плюс ко всему этому, все что было передано в интенте будет сохранено даже после выгрузки приложения из памяти (не видел где это описано, узнал с помощью тыка). Ну а если данных прям вообще ооочень много и нужно их хранить долго - лучше в бд, т.к. работает намного быстрее sharedPreferences и возможностей больше.
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
09.02.2016, 18:23  [ТС] #9
Spelcrawler, да, про БД согласен. Хотел у вас спросить,
Цитата Сообщение от Spelcrawler Посмотреть сообщение
все что было передано в интенте будет сохранено даже после выгрузки приложения из памяти
относится ко всему приложению или выгрузке одной активности?
Мне раньше казалось, что так в Андроиде действуют только статические переменные.
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
09.02.2016, 18:26 #10
Цитата Сообщение от CoolMind Посмотреть сообщение
относится ко всему приложению или выгрузке одной активности?
Я тестировал через студию, там слева от logcat есть панель инструментов (там где скриншот можно сделать) в этой панели есть красный крестик - он убивает приложение насовсем, так же как система при нехватке ресурсов. При таком завершении все данные, которые были в интенте последней запущенной активити, сохранялись. Другие ситуации не тестил, но конечно, если руками закрыть или перезагрузить устройство уже ничего не сохранится, а запустится новый инстанс приложения.
1
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
09.02.2016, 18:48 #11
Serializable
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
09.02.2016, 19:13  [ТС] #12
YuraAAA, не так давно читал, что Serializable имеет преимущество по скорости перед Parcelable, если прописывается вручную (с созданием соответствующих классов). Вы тоже так считаете?
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
10.02.2016, 08:07 #13
Выгрузка приложения из памяти не означает очистку кэша, имхо. Возможно поэтому данные интента и сохраняются.
1
YuraAAA
1576 / 1317 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
10.02.2016, 11:53 #14
CoolMind, а что значит с созданием соответствующих классов?
Parcelable будет быстрее, чем Serializable.
Но вот тут становится вопрос, сколько данных мы передаём. Если это объект, список из небольшого количества объектов, но зачем нам возня с Parcelable. А вот если количество объектов очень большое, то Parcelable будет ощутимо быстрее.

Тесты в миллисекундах
http://www.3pillarglobal.com/sites/d...parcelable.JPG
0
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
10.02.2016, 12:20  [ТС] #15
YuraAAA, сходу не нашёл ссылки, где я это прочитал. Конечно, почти 100% статей говорят о том, что Parcelable быстрее, и эта разница только увеличивается с объёмом данных. Ещё дома поищу.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2016, 12:20
Привет! Вот еще темы с ответами:

Передача переменных между классами - Программирование Android
Есть Main.java и Settings.java Settings.java содержит: public void onCreate(Bundle savedInstanceState) { ...

Передача данных между классами - Программирование Android
Добрый день господа. Пишу свое первое приложение на андроид, и столкнулся с вот такой проблемой. Чего я ожидаю от приложения. В...

Работа с активностями - Программирование Android
Здравствуйте. Только учусь... :))) Есть 3 активности. Для передачи данных между ними использую просто класс со статическими полями....

Передача объектов между активностями - Java EE
У меня есть сущность Test и мне необходимо передать объект этой сущности в другую активность, как это сделать? Я заметил что есть...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
10.02.2016, 12:20
Ответ Создать тему
Опции темы

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