Андрей
а чем плохи синглтоны? Вот и ответ.
обычно они плохи только тем, что не подсунешь тестовую реализацию сиглтона, с di такой проблемы нет
Mike
Если не инжектить разные реализации интерфейса, DI-контейнеры бесполезны. А если инжектить, то контейнеры только мешают.
то чувство когда зашёл спросить а начал срач
Mike
Утечки памяти
нет, связывание и поддерживаемость кода
Konstantin
вот не надо только словом срач злоупотреблядь, не каждый спор ради спора
(
Вообще, мы сравниваем сейчас закладку с закладкой. Синглтон-скоуп в DI != паттерн синглтон
Андрей
и что ты собираешься тестировать?
ну окей, например сделал синглтон скоупом класс для работы с бд, в юнит тестах просто подменил его на собственный же стаб
Андрей
и зачем?
затем, что например ваш рум в junit работать не будет, т.к. платформозависимый
Андрей
ну или работа с бд долгая и ее другой разраб делает
Андрей
да мало ли что
Vitaly
Блин, начали с интересных вещей, а продолжили розовыми пони
Mike
затем, что например ваш рум в junit работать не будет, т.к. платформозависимый
Это скорей баг рума, но вопрос был в другом. Что ты собрался тестировать?
Vitaly
Кроме флагментов может ещё как-нибудь состояние сохранять?
Андрей
Это скорей баг рума, но вопрос был в другом. Что ты собрался тестировать?
что-то что дергает бд, но основная цель класса не работа с бд, а что-нибудь еще, что мне и нужно протестировать
Mike
ради тестов можно и класслоажер подхачить
Ontoshgo
чем плох синглтон скоуп?
например тем, что это обманочка, он синглтон только в пределах компонента
Vitaly
savedInstanceState, nonConfigurationInstance
Там нельзя сохранять объекты, а делать сериализацию это уже костыль
Konstantin
savedInstanceState, nonConfigurationInstance
я вот не хочу чтобы у меня страница пагинации протекла во вью, чтобы вообще вью знал, какие есть еще варики
(
обложить андроид костылями, как всегда
Микросервисы херачить надо просто
(
Прямо в андроиде
(
В большом проекте костыли - плохо, а в куче маленьких можно
Konstantin
китайский-дед.жпг
Ontoshgo
можно расширить на весь проект, например
каким раком? application scope? так зачем тогда юзать аннотацию синглтона?
Konstantin
для источников данных синглтоны ок
Vitaly
А зачем в Android при повороте устройства уничтожается Activity? Вроде банальная вещь, с которой каждый сталкивается, но ведь для чего-то это нужно)
Konstantin
чтобы был 1 source of truth
Mike
для источников данных синглтоны ок
а если у тебя мультипользователь и разные БД?
Андрей
каким раком? application scope? так зачем тогда юзать аннотацию синглтона?
смотря в чем делать. В коине всегда можно получить что угодно из DI через объект KoinComponent, например. В любом месте
Ontoshgo
пересоздание вьюх, переизмерение всего, у тебя могут быть вобще другие лейауты для другой ориентации
Konstantin
а если у тебя мультипользователь и разные БД?
цель какая у них? если репликация - то под капотом должно быть, если это разные источники - то на каждый по синглтону
Ontoshgo
синглтон подразумевает факт того, что инстанс всегда только 1
Vitaly
пересоздание вьюх, переизмерение всего, у тебя могут быть вобще другие лейауты для другой ориентации
В iOS этого нет всего, но если даже так, то почему бы сразу не сделать как во фрагментах сохранение состояния?
Анатолий
клин сделай и перезапусти
в общем не помогло...
Андрей
Андрей
напилили ViewModel в Android Achitecture и тд
Vitaly
у активити есть тот же механизм
Возможно я о нём не слышал) Какой?
Vitaly
напилили ViewModel в Android Achitecture и тд
А вот это классная вещь) Жаль, что не столь популярная
Ontoshgo
и в onCreate приходит бандл со стейтом
Андрей
Artem
Всем привет! Есть такой вопрос, могут ли файлы, которые хранятся в getContext().getExternalFilesDir(null) быть удалены какими-то другими программами-чистильщиками, системой, очисткой кеша и т.д.?
Mike
А вот это классная вещь) Жаль, что не столь популярная
она не умеет сохранять состояние в случае смерти процесса
Vitaly
onSaveInstanceState
Activity всё равно уничтожится, а при сохранении только примитивные данные и строки передать можно
Vitaly
Parcelable же
Ну да, но я в том плане, что Object нельзя передать
Mike
GSON поможет превратить почти всё в строку =)
ага, сокет, байндер, соединение с БД
Андрей
ага, сокет, байндер, соединение с БД
поэтому почти всё, а не всё
Vitaly
GSON поможет превратить почти всё в строку =)
Это да, но это же костыли)) GSON больше для другого, а не для того, чтобы переживать обычный переворот экрана
Андрей
ага, сокет, байндер, соединение с БД
сокет с байндером и парселэйбл не перенесет
Андрей
Это да, но это же костыли)) GSON больше для другого, а не для того, чтобы переживать обычный переворот экрана
иногда такой костыль кучу времени может сэкономить, если нужно сериализовать список с огромной вложенностью, например
Сергій
если он влезет в ограничение IPC)
Roman
http://telegra.ph/Rebyat-kak-mozhno-sdelat-peredat-v-post-zapros-obekt-no-ne-ves-a-chast-07-30
Konstantin
и как выбирать между этими синглтонами?
всмысле как выбрать, я не понимаю ) выбираешь их на уровне di, в конфиге, какой надо такой и инъектишь
Vadim
MultiDexApplication класс это альтернатива тому что я могу просто в build gradle включить его ?
Anna
привет. подскажите пожалуйста правильно ли реализованы clone + equals / hashcode? https://gist.github.com/ManzhulaAnna/348b3891c79cce71957b78d64c4e5bd2 потому что или что-то неправильно делаю или не совсем понимаю концепцию. сравниваю два объекта, хэши разные...
Vadim
или в чем прикол данного класса то?
Anonymous
кто-нибудь тут сталкивался с проблемой, что в androidTest при включенном прогварде все классы приходится кипать, иначе получаешь поседовательно NoClassDefFoundError ?
Anna
вот что бывает когда не юзаешь котлин дата-классы )))
:) котлин учу пока что. так что в этом направлении работаем ;)
Андрей
public int hashCode() { int result = user.hashCode(); result = 31 * result + visibility.hashCode(); return result; }
Андрей
я как-то манёвра не понял