Size: a a a

2021 June 02

a

awawa in Kotlin Start
Так а мне вроде обычной джобы доложно хватать. Мне всего-то надо чтобы при отмене этой джобы все её дети тоже отменялись. Мне по сути не важно как ведут себя дети этой джобы
источник

BP

Bogdan Panchenko in Kotlin Start
тут пр оскоуп родительский
источник

BP

Bogdan Panchenko in Kotlin Start
типа так
private val viewScope = CoroutineScope(SupervisorJob() + Dispatchers.JavaFX)
источник

a

awawa in Kotlin Start
A failure or cancellation of a child does not cause the supervisor job to fail and does not affect its other children, so a supervisor can implement a custom policy for handling failures of its children.

А вот про сам Job:

сancellation of a parent leads to immediate cancellation of all its children recursively
источник

BP

Bogdan Panchenko in Kotlin Start
он переопределяет метод класса, который определен в его родителе, по умолчанию все наследуються от Any
источник

a

awawa in Kotlin Start
Переопределение метода toString(). Все классы по-умолчанию наследуются от Object, а у этого Object есть метод toString(). То есть у всех объектов всегда есть этот метод.
источник

BP

Bogdan Panchenko in Kotlin Start
ну у вас viewScope что-то еще открывает ? Если да, то омжно каждый рас создавать скоуп, правда не наю насколько это правильно, и отменять уже его
источник

L

Lessej in Kotlin Start
А, то есть это чтобы дать понять,  что если я напишу city.toString это вернёт city.name?
источник

BP

Bogdan Panchenko in Kotlin Start
все верно только в котлине Any
источник

BP

Bogdan Panchenko in Kotlin Start
да вернет имя города
источник

L

Lessej in Kotlin Start
Спс
источник

a

awawa in Kotlin Start
Нет, у меня viewScope только колектит флоу. Ну мне в общем-то создавать скоуп не нужно каждый раз. Просто в onDock создаётся новая джоба, а в onUndock она отменяется. Сам скоуп существует пока существует вью.
источник

BP

Bogdan Panchenko in Kotlin Start
ну тогда вот
источник

a

awawa in Kotlin Start
Да, спасибо)
источник
2021 June 03

VK

Vic Khov in Kotlin Start
Привет, я пишу простое приложение которое подключается к серверу по данным от пользователя (ip, port)

У меня возник вопрос как лучше организовать логику:

Сейчас у меня есть MainActivity (экран подключения, вводим данные, проверяем -- либо подключаемся, либо выводим через Toast что что-то не так, не подключаемся)

Так же есть SuccessfulConnectionActivity (все действия доступные после подключения)

Однако между двумя этими состояниями мне нужно показывать экран который практически полностью похож на MainActivity, только там соответственно есть переход к функциям SuccessfulConnectionActivity
и сейчас у меня это реализовано в рамках MainActivity просто несколько кнопок меняют visibility на "GONE" -- мне кажется это антипаттерн, но я не уверен т.к. новичёк в котлине (нужен ли тут отдельный activity?)

Собственно мой вопрос в том как организовать менеджмент экранов в андроид приложении, как это делают, какие паттерны тут приняты (типо MVVM как в Xamarin)? Есть ли наглядный гайд
источник

a

awawa in Kotlin Start
Вообще это вопрос для @android_ru. То, как сейчас сделано - это правильный подход. Если разница в наличии пары кнопок, то это не разные экраны, а разные состояния одного экрана.

И вообще отдельную активити делают сейчас достаточно редко, обычно следуют патерну сингл активити, а разные экраны переключаются через фрагменты. Можно посмотреть как это сделано на примере шаблонных проектов в студии с нижней навигацией или шторкой.
В принципе другая активити подразумевает другую логику работы с интерфейсом. Например, вот для чата типа телеграмма вполне логично делать основной интерфейс на одной активити, а видео- и аудиозвонки - на другой.

Насчёт MVVM, да этот паттерн активно применяется в нативной разработке наряду с MVP и MVI
источник

VK

Vic Khov in Kotlin Start
ого, спасибо, не знал про фрагменты
источник

ВК

Виктор Колышев... in Kotlin Start
Покопай в сторону jetpack compose. Гугл уходит от xml в интерфейсе и всех костылей вокруг него.
источник

ВК

Виктор Колышев... in Kotlin Start
Джетпак прям очень приятнее и логичнее. Я когда начинал писать под андроид, мне прям мозг выворачивало от фрагментов, передачи параметров между активити и контролем ориентации экрана. И насколько это проще и логичнее сделано в джетпаке, вызывает только один вопрос, почему сразу так не сделали.
источник

a

awawa in Kotlin Start
Только он всё ещё в бете и приложения пишутся на xml. И даже когда он выйдет в релиз, всё ещё будет очень много легаси на xml и даже новые вещи не сразу начнут писать на композе. Так что если писать под ведро чисто для себя, то можно сразу с композа начинать, но если цель стать полноценным андроид-разработчиком то тут надо "начинать с начала".
источник