
Artur
21.08.2017
13:21:17
на практике такие заморочки с оптимизацией не нужны, просто один конкретный кейс попался. Когда загрузка занимала 240 секунд)
теперь 15с, жить можно)

Sergey
21.08.2017
13:21:40
11к элементов это не мало
а что там так много отправляется?

Google

Artur
21.08.2017
13:22:29
товары из сети, предв. обработка, запись в БД

Sergey
21.08.2017
13:22:55
а памяти в хипе сколько выделено?

Boris
21.08.2017
13:24:03
Мм, так как ни бей, запись в бд замки на порядок больше
Займет

Artur
21.08.2017
13:24:22
да
кроме этой оптимизации еще и саму запись в БД оптимизировали, пришлось raw SQL в обход ORM делать

Sergey
21.08.2017
13:25:42
а.. а то на бекенде обрабатывать по 11к как-то накладно)

Artur
21.08.2017
13:27:02
есть нюансы)

Boris
21.08.2017
13:32:49
разбить 11к элементов на куски занимает ~200мс на моем компе, думаю, никакого значения что ты будешь для этого использовать не имеет

Denis
21.08.2017
14:10:44
Иначе - отсебятина

Igor
21.08.2017
14:11:10
JMH?
Это кажется вообще Android

Google

Denis
21.08.2017
14:11:31
Понятное дело что арт/далвик исказят немного, но это будет уже проблема чисто андроида

Михаил
21.08.2017
19:05:05
встал такой кейс с корутинами. а как мокать suspend функции?)

Quantum Harmonizer
21.08.2017
19:05:59
дежавю :)

Михаил
21.08.2017
19:06:19
?)

Quantum Harmonizer
21.08.2017
19:06:55
Я не подскажу, по какой фразе искать, но такой вопрос уже вставал раза три, в т. ч. в ближайшие пару дней.

Михаил
21.08.2017
19:07:50
чет не припомню. вроде регулярно почитываю чатик)

Quantum Harmonizer
21.08.2017
19:10:30
(сам не читал)
https://medium.com/@tonyowen/android-kotlin-coroutines-unit-test-16e984ba35b4

Михаил
21.08.2017
19:18:53

Konstantine
21.08.2017
21:34:02
Эх, а у object-классов никак нельзя конструктор реализовать? Прям в печаль ввело.

Михаил
21.08.2017
21:36:15
init {}

Va
21.08.2017
21:36:24
init на что ?)

Konstantine
21.08.2017
21:36:50
Мне туда надо передать Context. Чем тут init поможет?

Va
21.08.2017
21:37:18
так пиши свой кастомный метод
и хранить контекст в статических классах — плохая идея

Quantum Harmonizer
21.08.2017
21:38:09

Konstantine
21.08.2017
21:38:25

Quantum Harmonizer
21.08.2017
21:38:37

Konstantine
21.08.2017
21:38:53

Google

Quantum Harmonizer
21.08.2017
21:38:56

Konstantine
21.08.2017
21:39:43

Va
21.08.2017
21:39:50
потому что это потенциальная утечка памяти
контекст — очень непонятная и сложная штука )
>Код фреймворка так делает
например, какой?

Konstantine
21.08.2017
21:39:51
так что хоть приложения самого)

Quantum Harmonizer
21.08.2017
21:40:23

Konstantine
21.08.2017
21:41:31

Quantum Harmonizer
21.08.2017
21:43:04

Konstantine
21.08.2017
21:43:37

Va
21.08.2017
21:43:44
тут вопрос в том, что если вы храните у себя контекст какого-то не того уровня (например, активити), оно может не умирать и висеть в памяти. а т.к. applicationContext и Activity это Context, то очень легко ошибиться
я, например, от синглтонов отказался, в роли оных выступает обычно сингл-инстанс класс в графе
ты можешь инициировать свой менеджер сразу префсами

Konstantine
21.08.2017
21:45:25
Суть сейчас не в том чем инициировать, а в том, что банальной возможности сразу нет этого сделать, т.к. конструкторам сказали досвидос в object'ах. :(
Это надо какой-то initIt() делать и там все делать, не забывая вызывать его где-то

Va
21.08.2017
21:45:46

Konstantine
21.08.2017
21:46:31
Вот о чем и говорю, делать отдельную инициализацию придется

Va
21.08.2017
21:47:00
ну да, потому что они там не нужны ))
вы руками никогда и нигде не вызовете его
если бы можно было вызывать конструктор — значит, что это не объект, потому что в какой-то момент времени он может не иметь инстанса
можно было бы как-то сахарно встроить инициализацию объекта

Konstantine
21.08.2017
21:48:42
Это было бы банально как и эта инициализация руками, просто предусмотренная языком. Вместо Kotpref.init(context) можно было бы вызвать Kotpref(context) и все. Одно и тоже, но смотрится то секазнее. Имхо)
А что, кстати, за internal var?

Google

Va
21.08.2017
21:49:34
package-private

Konstantine
21.08.2017
21:49:53
Ох е)

Андрей
21.08.2017
22:00:36

Konstantine
21.08.2017
22:01:04

Андрей
21.08.2017
22:01:10
package-private
package-private в котлине нету. internal - это видимость на уровне модуля.

Konstantine
21.08.2017
22:01:13
Это было бы банально как и эта инициализация руками, просто предусмотренная языком. Вместо Kotpref.init(context) можно было бы вызвать Kotpref(context) и все. Одно и тоже, но смотрится то секазнее. Имхо)

Va
21.08.2017
22:02:14
module-private тогда, вернее, справедливо

Quantum Harmonizer
21.08.2017
22:20:02

Konstantine
21.08.2017
22:20:37

Quantum Harmonizer
21.08.2017
22:21:10

Konstantine
21.08.2017
22:21:13
А какого-то правила, что синглтон не должен получать и хранить данные - глупость какая-то) Синглтон главное чтобы был один, а там уже что надо пусть то и делает.

Quantum Harmonizer
21.08.2017
22:21:52

Konstantine
21.08.2017
22:22:18

Quantum Harmonizer
21.08.2017
22:22:38
Он должен быть независимым.

Konstantine
21.08.2017
22:23:22
С чего это?

Quantum Harmonizer
21.08.2017
22:23:28
Нормальные синглтоны получаются из чистых функциональных объектов.

Konstantine
21.08.2017
22:23:35
Он должен быть один, про независимость это уже ваши какие-то правила)

Quantum Harmonizer
21.08.2017
22:24:06
С чего это?
Потому что если он получает какие-то зависимости, кому-нибудь могут понадобиться разные экземпляры.

Google

Konstantine
21.08.2017
22:24:25
Тогда уже по определению человек не так мыслит
Ему значит нужен не синглетон

Quantum Harmonizer
21.08.2017
22:24:42

Konstantine
21.08.2017
22:24:44
Раз несколько экземпляров.
нет, это у вас тупо клин архитекчюр головного мозга, а так синглтон не о том)

Quantum Harmonizer
21.08.2017
22:25:44

Konstantine
21.08.2017
22:25:58
Суть та же - убрать зависимости)

Quantum Harmonizer
21.08.2017
22:26:33
То, что есть контекст приложения, который повсеместно нужен — не нормальная данность, а косяк Андроида.

Konstantine
21.08.2017
22:26:56
Это факт)

Quantum Harmonizer
21.08.2017
22:27:02

Konstantine
21.08.2017
22:27:49
Но от того, что андроид был изначально спроектирован через жопу - я не собираюсь отказыаться от синглов, который часто спасают) Да, это не лучший путь делать его зависимым - но от него никуда не деться)

Quantum Harmonizer
21.08.2017
22:28:46
Держать их в Application. Они будут effectively-синглтонами, но без костылей.

Konstantine
21.08.2017
22:29:24
Как-то мне это кажется еще более зависимым, хах)

Boris
22.08.2017
04:22:32
Про синглтон совсем недавно статья на Хабре была, в целом более менее толковая
Там конечно срача в комментах развели
А что касается андроида, то он сделан не удачно в этом смысле, синглтон для апликейшна так и просится. Но вроде можно обойтись если Даггер прикрутить

MainDRY
22.08.2017
06:41:38
кто знает как решить?