Size: a a a

Kotlin Community

2020 April 17

ПГ

Павло Гриник in Kotlin Community
Andrew Mikhaylov
А зачем отменять рутовый скоуп вьюмодели?
Чтобы не делать работы когда она уже не нужна?
источник

AM

Andrew Mikhaylov in Kotlin Community
Павло Гриник
Чтобы не делать работы когда она уже не нужна?
Дык он андроидом отменяется, насколько я знаю, вполне себе без крашей.
источник

AM

Andrew Mikhaylov in Kotlin Community
У человека бажина в коде, а ему предлагают ещё один родительский скоуп завести зачем-то.
источник

ПГ

Павло Гриник in Kotlin Community
А, если джетпаковский, то да. Я думал человек свой вручную создавал
источник

AM

Andrew Mikhaylov in Kotlin Community
А, может быть, я не читал же.
источник

ПГ

Павло Гриник in Kotlin Community
🤷‍♀
источник

AN

Alexander Nozik in Kotlin Community
Вообще, с учетом того, что там еще и ручная отмена детей этого скоупа, какая-то фигня получается. Или он таки должен падать, или он должен утекать.
источник

AM

Andrew Mikhaylov in Kotlin Community
Я не совсем понимаю, что именно там должно утекать, если это рутовый скоуп, который в явном виде отменяется при завершении жизненного цикла соответствующей сущности.
источник

VN

Viktor Noskin in Kotlin Community
Ну вроде viewModeScope завершается, когда у viewModel вызовется onCleared. Может проблема в том, что viewModeScope - SupervisorJob и при его cancel вроде дочерние джобы не закрываются? Или я вообще не о том😁
источник

AM

Andrew Mikhaylov in Kotlin Community
Viktor Noskin
Ну вроде viewModeScope завершается, когда у viewModel вызовется onCleared. Может проблема в том, что viewModeScope - SupervisorJob и при его cancel вроде дочерние джобы не закрываются? Или я вообще не о том😁
Супервайзор не совсем о том — в супервайзоре при завершении дочерней джобы не завершаются её соседи.
источник

AM

Andrew Mikhaylov in Kotlin Community
При этом заершение самого супервайзора, как обычно, завершает всех его детей.
источник

VN

Viktor Noskin in Kotlin Community
Аа, спасибо
источник

MR

Max Rovkin in Kotlin Community
Max Rovkin
Привет. Столкнулся с такой штукой:
мне иногда прилетает вот такая ошибка без внятного стектрейса
E/EventThread: Task threw exception
   kotlinx.coroutines.JobCancellationException: StandaloneCoroutine was cancelled; job=StandaloneCoroutine{Cancelled}@70de65b


E/AndroidRuntime: FATAL EXCEPTION: EventThread
   Process: com.osome.stage, PID: 18555
   kotlinx.coroutines.JobCancellationException: StandaloneCoroutine was cancelled; job=StandaloneCoroutine{Cancelled}@70de65b

Есть какой-нибудь способ понять, из какого места?

У меня есть подозрения на вот эти вызовы, которые иполняются в определённые моменты ЖЦ. Но как-то странно немного.

unbindScope.coroutineContext[Job]?.cancelChildren()
destroyScope.coroutineContext[Job]?.cancelChildren()
Вот саммари
источник

O

Omar in Kotlin Community
how to solve error unresolved class signup
источник
2020 April 18

MK

Mark Kos in Kotlin Community
Andrew Mikhaylov
Итого:
inline class Foo(val fld: Int)

fun check() {
   val klass = Foo::class.java
   val annotation = klass.getAnnotation(Metadata::class.java)
   val header = KotlinClassHeader(
       annotation.kind,
       annotation.metadataVersion,
       annotation.bytecodeVersion,
       annotation.data1,
       annotation.data2,
       annotation.extraString,
       annotation.packageName,
       annotation.extraInt
   )
   val metadata = KotlinClassMetadata.read(header)!! as KotlinClassMetadata.Class
   val classFlags = metadata.toKmClass().flags
   println("Is Foo inline? ${Flag.Class.IS_INLINE(classFlags)}")
}

(не забыв, конечно, implementation("org.jetbrains.kotlinx:kotlinx-metadata-jvm:0.1.0"))
Спасибо!
Интересно, почему в KClass не включили.
источник

AN

Alexander Nozik in Kotlin Community
Mark Kos
Спасибо!
Интересно, почему в KClass не включили.
Вероятно потому, что не понятно, зачем нужно. Опишите юз кейс.
источник

AN

Alexander Nozik in Kotlin Community
Пазлер словил: https://youtrack.jetbrains.com/issue/KT-38372. Я теперь вспомнил, что что-то такое уже мелькало.
источник

AN

Alexander Nozik in Kotlin Community
В принципе по вот этому https://kotlinlang.org/docs/reference/lambdas.html#closures ясно, что если можно модифицировать, то захват идет по имени, а не по ссылке, но надо бы это как-то выделить
источник

MK

Mark Kos in Kotlin Community
Alexander Nozik
Вероятно потому, что не понятно, зачем нужно. Опишите юз кейс.
Десериализация json рефлекшеном. У меня есть dto содержащее klock.DateTime. Для десериализации я пробегаюсь по параметрам конструктора и нахожу их в json. Но, если параметр inline класс его нельзя десериализовывать как обычный класс или тип.
источник

AN

Alexander Nozik in Kotlin Community
Mark Kos
Десериализация json рефлекшеном. У меня есть dto содержащее klock.DateTime. Для десериализации я пробегаюсь по параметрам конструктора и нахожу их в json. Но, если параметр inline класс его нельзя десериализовывать как обычный класс или тип.
А какой-нибудь Jackson не умеет это?
источник