
Denis
22.10.2018
13:56:21
т.е. прямиком в конструктор нельзя просто так заинжектить, верно?)

Mikhail
22.10.2018
13:56:38
можно
как бы так объяснить

Denis
22.10.2018
13:56:49
class PresenterA @Inject constructor(myClassA: ClassA, myClassB: ClassB): AbstractPresenter(myClass)

Google

Denis
22.10.2018
13:57:03
в общем нужно в активити инжектить и оттуа передавать в презентер А, а из конструкора презентера А передавать в абстрактный презентер
так?

Anton
22.10.2018
13:58:08
заинжекти как проперти в базовый класс чтобы не прокидыват ькаждый раз

Alexander
22.10.2018
13:58:12
Привет, такая ситуация, у меня есть несколько элементов типа imageView, они по клику вызывают один метод, можно ли в самом методе получить id того imageView нажатие на который вызвало этот метод, надеюсь норм объяснил

Denis
22.10.2018
13:58:44

Mikhail
22.10.2018
13:58:46
в общем, предлагаю сначала прочитать что такое DI контейнеры и как они работают, мне в свое время помог разобраться вот этот ридми https://github.com/svermeulen/Zenject#theory

Anton
22.10.2018
13:59:36
расплодить?
1 проперти?

Mikhail
22.10.2018
13:59:40
а если разным анследникам потребуются разные реализации?

Anton
22.10.2018
13:59:49
лучше в каждом наследнике кидать в конструктор ?

Google

Anton
22.10.2018
13:59:54
а если их 5?

Mikhail
22.10.2018
14:00:14
но это вне разговора
да, лучше в конструктор кидать
тогда у тебя есть контроль
иначе можно тупо захардкодить в базовом классе, эффект примерно тот же самый

Denis
22.10.2018
14:01:00
у меня 1 базовый презентер и 2 наследника, около 5 пропертей
честно говоря, мне чет не нравится в базовый че то инжектить
он же абстрактный

Anton
22.10.2018
14:01:37

Mikhail
22.10.2018
14:01:58
через проперти надо инжектить только, когда иного выхода нет

Anton
22.10.2018
14:02:00
хз мне не нравится прокидывать в каждом наследнике кучу параметров

Mikhail
22.10.2018
14:02:17
например, в случае если ты управляешь жизненным циклом объекта

Anton
22.10.2018
14:02:33
я знаю что лучше конструктор / филд
в этом месте мне больше нравится филд

Алексей
22.10.2018
14:02:41
Здравствуйте! У меня появился такой вопрос. В андроид приложении я взаимодействую с бэкендом на ASP.NET и в JSON-файлах мне приходят ключи вида "id": "854a8d07-5a37-4e1e-8547-40ce891b3663". Скажите допустимо ли будет хранить такие ключи в виде строк в базе данных или есть како-нибудь лучший способ хранения?
Сорри, если оффтоп)

Mikhail
22.10.2018
14:02:59

Anton
22.10.2018
14:03:22
если они совсем не связаны?

Denis
22.10.2018
14:03:47

Google

Denis
22.10.2018
14:04:00

Mikhail
22.10.2018
14:04:25
бой за секьюрити уже проигран, еще не начавшись, кмк

Denis
22.10.2018
14:05:28
всем спасибо, оба варианта работают, но мне чет не оч нравится в базовый класс инжектить

Egor
22.10.2018
14:06:09

Anton
22.10.2018
14:07:01
ну если разные реализации то да - мой вариант не подходит. тут квалифаеры и конструктор

Alexey
22.10.2018
14:11:25
Чо то какие то "Вредные советы" от админов подъехали

Алексей
22.10.2018
14:15:19

Mikhail
22.10.2018
14:18:30

Алексей
22.10.2018
14:18:53

Mikhail
22.10.2018
14:19:36
ты прощен, сын мой ✝️

dimiii
22.10.2018
14:20:12
А какая епитимья-то?

Ilya
22.10.2018
14:21:25
Всем привет. А подскажите почему рекомендуют заменять list.sorted().sortedBy { ... } на list.asSequence().sorted().sortedBy { ... } ?

Mikhail
22.10.2018
14:21:35

Igor
22.10.2018
14:37:05

Andrey
22.10.2018
14:39:41

Алексей
22.10.2018
14:54:04
(или в том числе?)

Mikhail
22.10.2018
14:57:44

Google

Aleqzandr
22.10.2018
15:03:03

Алексей
22.10.2018
15:03:45
А какой тип данных это в Котлине?

Aleqzandr
22.10.2018
15:04:13
Long

Vladimir
22.10.2018
15:05:10

Mikhail
22.10.2018
15:06:16

Vladimir
22.10.2018
15:06:35

Mikhail
22.10.2018
15:06:47
but_why.gif

Vladimir
22.10.2018
15:07:55
Ну как бы от задачи зависит, что там за uuid. Не всегда они просто рандомные.
Хотя указанный выше "854a8d07-5a37-4e1e-8547-40ce891b3663" именно такой.

Алексей
22.10.2018
15:13:23
Long
А лонг схавает такое значение guid? Или guid надо как-кто их окнвертировать?
*сконвертировать

Mikhail
22.10.2018
15:14:22

Quantum Harmonizer
22.10.2018
15:14:53

Mikhail
22.10.2018
15:14:55
убрать "-" и toLong(radix = 16) по идее должно

Quantum Harmonizer
22.10.2018
15:15:08
у UUID есть два лонговых поля

Aleqzandr
22.10.2018
15:15:16

dimiii
22.10.2018
15:15:20
Ну в лучшем случае двумя килобайтами

Mikhail
22.10.2018
15:16:40
тем более на Android
это жи не хайлоад™

Google

Roman
22.10.2018
15:17:40
Товарищи, а можно как-то написать потокобезопасный счетчик на каналах типа val counter = ConflatedBroadcastChannel<Int>(0) без использования synchronized?.

sasha
22.10.2018
15:18:49
AtomicInteger?

Roman
22.10.2018
15:22:24
Не, нужен именно канал. По ходу никак нельзя, а жаль...

Mikhail
22.10.2018
15:23:15

Roman
22.10.2018
15:24:06
Ну сами каналы да, но тут ConflatedBroadcastChannel. Он как раз для хранения стейта.
Просто если я сделаю тупо counter.offer(counter.value + 1), будет дичь.

Mikhail
22.10.2018
15:28:31
я пока не сильно въехал в каналы, на что если сделать два канала и корутину, которая будет хранить стейт?
т.е. ты делаешь channel1.offer(Unit), корутина выгребает, инкрементит свой счетчик и делает channel2.offer(Int)

Alexey
22.10.2018
15:29:20
На конфе был пример как делать шейред стейт с каналами
Типо акторы для бедных

Mikhail
22.10.2018
15:29:49
ну да, сам заметил что у меня получился актор

Roman
22.10.2018
15:30:01
Вот как-то так:
val increment = actor<Unit> {
while (true) {
receive()
counter.send(counter.value + 1)
}
}
Это будет потокобезопасно?

Mikhail
22.10.2018
15:33:17
и никакое состояние ты не шаришь

Roman
22.10.2018
15:33:37
Еще как есть. DefaultDispatcher.

Mikhail
22.10.2018
15:33:42
оно у тебя инкапсулировано внутри

Vladimir
22.10.2018
15:33:46

Алексей
22.10.2018
15:34:08

Паша
22.10.2018
15:35:05