Size: a a a

Android Architecture

2020 October 09

KD

Konstantin Dovnar in Android Architecture
+ синхронизация при обращении и лишние проверки.
источник

КР

Кирилл Романенко... in Android Architecture
Пишите lazy(LazyThreadSafetyMode.NONE) вместо lazy, и будет вам счастье (в рамках одного класса, в котором нет асинхронности).
источник

ES

Egor Sigolaev in Android Architecture
Konstantin Dovnar
Суть, как я понял, в том, что у тебя на каждую вью при создании экрана всё равно создастся по лишнему (анонимному) классу. @Harmonizr против этого.
А чего? Мне кажется скорость открытия и показа экрана для юзера самая важная
источник

QH

Quantum Harmonizer in Android Architecture
Konstantin Dovnar
Оно всё будет тормозить при создании. Мы всё-таки в андроиде. Но вот эта экономия на нескольких анонимных классах — ерунда.

Оптимизации ради оптимизаций бывают весёлыми, но обычно бесполезными.
Ты покажешь, как можно «утонуть в оптимизациях»? Или будешь подменой тезиса заниматься?
источник

QH

Quantum Harmonizer in Android Architecture
Кирилл Романенко
Пишите lazy(LazyThreadSafetyMode.NONE) вместо lazy, и будет вам счастье (в рамках одного класса, в котором нет асинхронности).
не будет
источник

с#

саша сок #KotlinGang... in Android Architecture
Quantum Harmonizer
ваши спички, сэр
но вообще об этом.

давайте тогда писать не

view.setOnClickListener {

}

А

view.setOnClickListener(object : OnClickListener {
    override fun onClick(v: View) {

    }
})
источник

КР

Кирилл Романенко... in Android Architecture
Quantum Harmonizer
не будет
Не синхронный лейзи значительно дешевле.
источник

KD

Konstantin Dovnar in Android Architecture
Quantum Harmonizer
Ты покажешь, как можно «утонуть в оптимизациях»? Или будешь подменой тезиса заниматься?
Нет, пока ты не покажешь мне, где приложение лагает от лейзи вьюх. А то какой-то сумбур выходит, я тебе там что-то должен, а сам спрятался:)
источник

QH

Quantum Harmonizer in Android Architecture
саша сок #KotlinGang
но вообще об этом.

давайте тогда писать не

view.setOnClickListener {

}

А

view.setOnClickListener(object : OnClickListener {
    override fun onClick(v: View) {

    }
})
а разница?
источник

КР

Кирилл Романенко... in Android Architecture
Konstantin Dovnar
Нет, пока ты не покажешь мне, где приложение лагает от лейзи вьюх. А то какой-то сумбур выходит, я тебе там что-то должен, а сам спрятался:)
Я, конечно, уважаю Мишу, но иногда он больше похож на разумный компилятор, чем на человека. :)
источник

KD

Konstantin Dovnar in Android Architecture
Кирилл Романенко
Я, конечно, уважаю Мишу, но иногда он больше похож на разумный компилятор, чем на человека. :)
Уверен, что иногда это даже полезно:)
источник

с#

саша сок #KotlinGang... in Android Architecture
Quantum Harmonizer
а разница?
для андроида, который до джавы с лямбдами будут генериться синтаксические классы, как вы показали на скрине. там же не от лейзи это, а от лямбды lazy { /* от этого */ }
источник

QH

Quantum Harmonizer in Android Architecture
Konstantin Dovnar
Нет, пока ты не покажешь мне, где приложение лагает от лейзи вьюх. А то какой-то сумбур выходит, я тебе там что-то должен, а сам спрятался:)
формально ты прав, пойду заниматься хуитой, раз уж именно я начал что-то утверждать
источник

QH

Quantum Harmonizer in Android Architecture
саша сок #KotlinGang
для андроида, который до джавы с лямбдами будут генериться синтаксические классы, как вы показали на скрине. там же не от лейзи это, а от лямбды lazy { /* от этого */ }
может, синтетические?
Ну и в чём разница между синтетическим и анонимным, что ты сэкономил?
источник

KD

Konstantin Dovnar in Android Architecture
саша сок #KotlinGang
но вообще об этом.

давайте тогда писать не

view.setOnClickListener {

}

А

view.setOnClickListener(object : OnClickListener {
    override fun onClick(v: View) {

    }
})
В данном кейсе, скорее, надо создать один OnClickListener на всех, чтобы что-то реально сэкономить.
источник

с#

саша сок #KotlinGang... in Android Architecture
Quantum Harmonizer
может, синтетические?
Ну и в чём разница между синтетическим и анонимным, что ты сэкономил?
> может, синтетические?

да-да, я хз какую-то фигню написал.
источник

с#

саша сок #KotlinGang... in Android Architecture
Quantum Harmonizer
может, синтетические?
Ну и в чём разница между синтетическим и анонимным, что ты сэкономил?
ну тогда лейзи тоже не является проблемой.
источник

QH

Quantum Harmonizer in Android Architecture
Konstantin Dovnar
В данном кейсе, скорее, надо создать один OnClickListener на всех, чтобы что-то реально сэкономить.
угу, у вот это зачастую действительно стрёмно
источник

AI

Arkadii Ivanov in Android Architecture
Текст обучалки не обновили 🤦‍♂️ но код вроде норм https://github.com/badoo/RIBs/tree/master/tutorials/tutorial1/src/main/java/com/badoo/ribs/tutorials/tutorial1/rib/hello_world
источник

QH

Quantum Harmonizer in Android Architecture
Konstantin Dovnar
Нет, пока ты не покажешь мне, где приложение лагает от лейзи вьюх. А то какой-то сумбур выходит, я тебе там что-то должен, а сам спрятался:)
Лагает оно, предсказуемо, несильно: у меня получилось 4 мс на создание lazy для 10 вьюх, то есть, чтобы пропустить целый кадр, нужно насоздавать 40 таких лейзи.
А вот с памятью всё (предсказуемо) грустно. У каждого анонимного класса retained size — 296 байт (that is, 10 вьюх — три килобайта мусора). Причём это только в хипе, а какими структурами данных там оперирует компилятор — можно только гадать.
источник