ááá¯áá¯ááááºáž áá±á¬ááºážáááºá ááááºáá±á¬ááºážáááºá ááá¯á·áá±á¬áº áááºáá¶áááŸááá¬ážáá±á¬áá±áá¬ááᯠ"passive storage" status á០"active use" status ááá¯á· ááœáŸá²ááŒá±á¬ááºážááŒááºážááŒáá·áº áááŸááá¬áá±á¬ data ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºááẠá¡áá±á·á¡áá»áá·áºáááºáž ááá¯á¡ááºáá«áááºá áá®á¡áá¯áá®ááá¯ááºáž áá±á·áá»áá·áºááŸá¯ áááºáá±á¬ááºáá² áá±á¬ááºážáá±áá«á
á± "áááºáááºááŸá¬" á¡áá¯ááºá ááá¯á¡ááºáá±áá«áá±ážáááºá á¡áááºáá±á¬áºááŒáá«á¡áá»ááºáá»á¬ážááẠáá±á¬á·ááºáá²ááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á¡áá«á¡ááẠáá±á·áá¬ááŸá¯áááºáááºá¡á¬ážáá¯á¶ážáá®ážáá«ážááŸáá·áº áááºááá¯ááºáá«áááºá
ááá¯ááŸá áºááœáẠGeekBrains ááẠá¡áœááºááá¯ááºážááá¹áááá¯áẠGeekUniversity áááá¯ááá¯ááºážááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážáá¬áááá áºá áááºáá áºááá¯ááºážá¡áá±ááŒáá·áºá á¡ááœá²á·ááẠááá±á¬áºáááºááŸááºááẠdeveloper áá»á¬ážááŒá áºááá·áº á¡ááŒááºá¡ááŸááºá¡áá»áá¯ážááŒá¯ááá·áºá¡á±áá»ááºá á® AGIMA ááŸáá·áº á áááºáá¯ááºáá±á¬ááºáá²á·ááẠ(áááºážááá¯á·ááẠááŸá¯ááºááœá±ážáá»á¬ážááŒá¬ážáá±á¬ááá±á¬áá»ááºáá»á¬ážá áá±á¬áºááá¯ááááºáá±á«áºáááºáá»á¬ážááŸáá·áº ááá¯ááá¯ááºážá¡ááºááá®áá±ážááŸááºážáá»á¬ážááᯠáááºáá®ážááŒáááºá áá«áá«áá²)á AGIMA ááŸáá·áº GeekBrains ááá¯á·ááẠááá¯ááá¯ááºážá¡ááºááá®áá±ážááŸááºáž ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯á áááºááœá±á·áá»áá±á¬ ááŒá¿áá¬áá»á¬ážááᯠáááºááŸáá¯ááºážá áœá¬ ááá¯ážáááºážááẠááœá±ážáá»ááºááŸá¯áá áºáá¯ááᯠáááºáá®ážáá¬ážáááºá
á¡ááŒá¬ážáá±á·ááœáẠáá»áœááºá¯ááºááá¯á·ááẠiOS á¡áá°ážáá»áœááºážáá»ááºáá° Igor Vedeneev ááŸáá·áº Android á¡ááœáẠá¡áá°ážááŒá¯ Alexander Tizik ááá¯á·ááŸáá·áº á
áá¬ážááŒá±á¬áá²á·áá«áááºá áááºážááá¯á·ááŒá±á¬áá·áºá ááá¯ááá¯ááºážááœá¶á·ááŒáá¯ážááá¯ážáááºáá±ážááá¯ááºáᬠááœá±ážáá»ááºááŸá¯ááŸá¬ áááºááœá±á·áá»áá» ááŒáœááºááá¬áá«áááºá
á¥ááá¬áá áºáá¯á¡áá±ááŒáá·áº RxSwift ááá¯á¡áá¯á¶ážááŒá¯á iOS ááœáẠáá¯á¶á·ááŒááºááŸá¯áááá¯ááááºááŒá¯áá¯ááºááŒááºážá
ááœá±ážáá»ááºáá¶ááá±á¬ ááᬠIgor Vedeneev - "RxSwift ááŒáá·áº ááá·áºáá»áŸá±á¬ááºááœáŸá¬ááẠáá»á¶áááºážáááá·áºáááº"
ááœá±ážáá±á¬ááºááœá²áá¬áá¡ááœááºáž áá»á±á¬ááºážáá¬ážááœá± áááºááá¯á¡áá»ááºá¡áááºááœá±ááá²á
áá»áœááºá¯ááºááá¯á·ááẠáá°áá±á¬ááºá á
áœááºážáá±á¬ááºáááºáá»á¬ážá¡ááŒá±á¬ááºážáá¬áá ááá¹áááẠMVVM + RxSwift áá±á«ááºážá
ááºááŸá¯ááœáẠáááºážááᯠá¡áá¯á¶ážááŒá¯áááºážááᯠááŒááá«áááºá áááºááœá±á·á¥ááá¬áá»á¬ážá
áœá¬ááá¯áááºáž ááœá±ážááœá±ážáááºá áááŸááá±á¬áá±áá¬ááᯠá
á¯á
ááºážáááºá¡ááœááºá áá»áœááºá¯ááºááá¯á·ááẠáááºáááºáááºáááºááŸá¯á¡ááŒá±á¡áá±áá»á¬ážááŸáá·áº á¡áá®ážá
ááºáá¯á¶ážá¡áá®ážá
ááºáá¯á¶ážááŒá
áºáá±á¬ á¡ááºááá®áá±ážááŸááºážáá
áºáá¯ááᯠáá±ážáá«á áááºážááᯠá¡áá¯á¶ážááŒá¯á áá®áááŸá¬ááœá±ááŸá¯á¡ááºááºáá
áºáᯠááŒá
áºáá¬áááºááŒá
áºáááºá
RxSwift - iOS áááá¯ááááºáá¬áá áºáŠážááẠá¡áááºááŒá±á¬áá·áº á€áá±á¬ááºááᯠááá¯á¡ááºááááºážá áááºážááẠdeveloper áá áºáŠážá¡ááœáẠááááᯠáááºááá¯á·ááœááºáá°á á±ááááºážá
RxSwift ááẠááŒá áºáááºá á®ážááŒá±á¬ááºážáá»á¬ážááŸáá·áº á¡áá¬ááá¹áá¯áá»á¬ážááŒá¬áž áá»áááºáááºááŸá¯áá»á¬ážááŸáá·áº á¡áá¯ááºáá¯ááºáá«áááºá á¡ááá¯ážááŸááºážáá¯á¶ážááŸáá·áº á¡áááºááŸá¬ážáá¯á¶áž á¥ááá¬ááŸá¬ bindings ááŒá áºáááº- á¥ááá¬á viewModel ááŸá variable ááœáẠáááºááá¯ážá¡áá áºáá»á¬ážááᯠáááºááŸááºáá¯á¶ááŒáá·áº á¡ááºáá¬áá±á·á áºááᯠá¡ááºááááºáá¯ááºááá¯ááºáááºá ááá¯á·ááŒá±á¬áá·áº interface ááẠdata-driven ááŒá áºáá¬áááºá ááá¯á·á¡ááŒááºá RxSwift ááẠááá·áºá¡á¬áž ááá·áºáá¯ááºááᯠá á¯á ááºážááŒá®áž áááºááá¯ááºááŸá¯ááᯠááá¯ážááŒáŸáá·áºááá¯ááºá á±ááá·áº ááŒá±ááŒá¬á ááá¯ááºááŒáá·áº á áá áºá¡á¬áž áá±á¬áºááŒááœáá·áºááŒá¯áááºá á€á¡áá¬á¡á¬ážáá¯á¶ážááẠá¡ááá®áá±ážááŸááºážáá»á¬ážááᯠááá¯ááá¯áááá±á¬ááºá áœá¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºá á±ááẠáá°áá®áá±ážáááºá
áá±á¬á·ááºáá²áá±ážáá¬ážáá°á¡ááœááºá áá¯á¶á·ááŒááºááŸá¯áááá¯ááááºáá±ážááœá²ááŒááºážááᯠáá¬ážáááºááŒá®áž á¡áá°ážáááŒáá·áº RxSwift ááŸáá·áº á¡ááœá±á·á¡ááŒá¯á¶ááẠá á»á±ážááœááºááœááºáááºááá¯ážááŸááá±á¬ááŒá±á¬áá·áºá áá°áá±á¬ááºááá¯ááºáá¬á¡ááááá¬áááºáááºáž ááá¯ááºáá±ážááŸááºáááºážááœáẠáá±á¬ááºážááœááºáá±á¬á¡á¬ážáá¬áá»ááºáá áºáá¯ááŒá áºáááºá
á¡ááŒá¬ážáá°áá»á¬ážááẠá€á¡áá°ážáá±á¬ááºááᯠá¡áááºááŒá±á¬áá·áº ááœá±ážáá»ááºááááºážá
RxSwift ááœááºá¡ááŒá®ážáá¯á¶ážá¡ááá¯ááºážá¡ááá¯ááºážááŸááááºá ááá¯ááá¯áááºááŸá¬á developer ááŒá¯á¶ááœá±á·áá±ááá±á¬ááŒá¿áá¬ááᯠáá áºá á¯á¶áá áºáŠážá០ááŒá±ááŸááºážááŒá®ážáá¬ážááŒá áºááẠá¡ááœáá·áºá¡áááºážááá¯áá»á¬ážáá«áááºá áá±áá¹áá¬áá²á á ááºážááœá±áááºáž á¡áá»á¬ážááŒá®ážá ááá¯á·á¡ááŒáẠRxSwift ááẠReactiveX ááá áºá áááºáá áºááá¯ááºážááŒá áºáááºá ááá¯ááá¯áááºááŸá¬ Android á¡ááœáẠanalogue áá áºáá¯ááŸááááºá á¥ááᬠ(RxJavaá RxKotlin) ááŸáááŒá®áž á¡áá¯ááºáá¯á¶ááŸá áá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážááẠá¡áá»áá¯á·áá±á¬ iOS ááŸáá·áº á¡áá¯ááºáá¯ááºááŒá±á¬ááºážá á¡áá»áá¯á·ááŸá¬ Android ááŒáá·áº áá¯ááºáá±á¬ááºáá±áá±á¬áºáááºážá á¡áá¯ááºáá¯á¶ááŸá áá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážááẠáá°áá®áá±á¬áá¬áá¬á áá¬ážááᯠááŒá±á¬ááá¯ááá¯ááºáááºá
áá°áá±á¬ááºááᯠá¡áááºáááŒáẠá¡ááºááááºáá¯ááºáá¬ážááŒá®ážá áá±ážáááºáá±á¬ áá»áá¯á·ááœááºážááŸá¯áá»á¬ážááᯠááŒá¯ááŒááºáá±ážáááºá Swift áá¬ážááŸááºážá¡áá áºá០á¡ááºá¹áá«áááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠáá±á«ááºážááá·áºáá¬ážááŒá®áž á ááºážááŸá±á¬ááºááŸá¯á¡áá áºáá»á¬ážááᯠááá·áºááœááºážáá¬ážáááºá RxSwift ááẠopen source ááŒá áºáá±á¬ááŒá±á¬áá·áºá áááºááẠááŒá±á¬ááºážáá²ááŸá¯á¡á¬ážáá¯á¶ážááᯠááá¯ááºáá¬ááá¯ááºáá«áááºá ááá¯á·á¡ááŒááºá áááºážááá¯á·ááᯠááá¯ááºááá¯ááºááá·áºááá¯ááºáááºá
RxSwift ááᯠáááºááá·áºáá±áá¬ááœáẠá¡áá¯á¶ážááŒá¯ááá·áºááááºážá
- áá»ááºááŸá±á¬ááºááŒááºážá á ááºážáá»ááºážá¡áá áá»áœááºá¯ááºááá¯á·ááẠáá±áá¬ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠáá¯á¶á·ááŒááºááŒááºážáá²á·ááá¯á· UI ááá¯ááŒá±á¬ááºážáá²ááá¯ááºááá·áºá áœááºážáááºá UI á¡ááŒá±á¬ááºážááŒá±á¬áá±ááŒááºážááŒá áºááŒá®áž á¡ááºááááºáá¯ááºáááºá¡áá»áááºáá±á¬ááºááŒá®áᯠááŒááºáá¬ážá áœá¬áááŒá±á¬áá² á¡ááºáá¬áá±á·á áºááᯠááŒá±á¬áá±áá«áááºá
- á¡á
áááºá¡ááá¯ááºážáá»á¬ážááŸáá·áº áá¯ááºáááºážáá±á¬ááºááœááºááŸá¯áá»á¬ážááŒá¬áž áááºá
ááºááŸá¯á á¥ááá¬áá
áºáá¯áá¬á ááœááºáááºá០áá±áá¬á
á¬áááºážááᯠááá°ááẠááá¯á¡ááºáááºá ááááºáá±á¬á· áá«áᬠááá¯ážááŸááºážáá²á· áá¯ááºáá±á¬ááºáá»áẠááá¯ááºáá«áá°ážá áááºážááá¯áá¯ááºáá±á¬ááºááẠáááºááẠáá±á¬ááºážááá¯áá»ááºáá
áºáᯠáá±ážááá¯á·áááºá áá¯á¶á·ááŒááºááŸá¯ááᯠá¡áá¬ááá¹áá¯áá
áºáá¯á áááºážáá»ááºážááŸá¯ááœáẠáá¯á¶áá±á¬áºáááºá áááºážááᯠáá±áá¬áá±á·á
áºááœáẠááááºážáááºážááŒá®áž UI ááá¯á· áá±ážááá¯á·ááẠááá¯á¡ááºáááºá á
ááºážáááºážá¡ááá¯ááºážá ááœá²ááŒá¬ážáá±á¬á¡á
áááºá¡ááá¯ááºážáá»á¬ážááẠá€áá¯ááºáááºážáá±á¬ááºáá¬áá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠáá¬áááºááŸáááẠ(áá»áœááºá¯ááºááá¯á·ááẠá¡ááŒá±áá¶áá°áá»á¬ážááᯠááŸá
áºáááºááŒá®áž ááá¯ááºáá¬áá«áááºá
ááá¯ááºáá¬áá±á¬ ?) áááºáá²ááœáẠRxSwift áá²á·ááá¯á·áá±á¬ áááááá¬áá áºáá¯ááŸááá±áááŒáá·áºá áááºážááẠá áá áºáá¯ááºáá±á¬ááºááá·áºá¡áá¬ááᯠáá±á¬áºááŒááẠááŒá áºááá¯ááºááŒá®áž á¡ááŒá¬ážáá±áá¬áá»á¬ážááœáẠáááºááá¯á·áá¯ááºáá±á¬ááºáááºááᯠáá±á¬áºááŒááá¯ááºáááºá ááá¯á·á¡ááœááºááŒá±á¬áá·áº áá¯ááºá ááá¯ááá¯áá±á¬ááºážááœááºáá±á¬ á¡ááœá²á·á¡á ááºážááᯠá¡á±á¬ááºááŒááºááŒá®áž áááºááŸá¯ááá¯ááºááŸá¯ ááá¯ážáá¬ááŒááºážááŒá±á¬áá·áº ááŒá áºáá«áááºá ááŸáá¯ááºážáááŒá±á¬ááá»áŸáẠáá¯ááºááᯠá¡ááŒá±á¬ááºážá¡áá¬ááá¬ážáá áºáá¯ááŸáá·áº á á¬á¡á¯ááºááá¯ááºááá¯áẠááœá²ááŒá¬ážááá¯ááºáááºá
Kotlin ááŸá á¡áá»áá·áºá á¬áááá¹ááá»á¬áž
Elective Course ááᬠAlexander Tizik - âáá±ááºáá®ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá±ááºáá®áááºážááá¬ááá¯ááºáᬠáááºážáááºážáá»á¬áž ááá¯á¡ááºáááºâ
Branded ááœá¬áá¬ážááá áºá áááºáá áºááá¯ááºážá¡áá±ááŒáá·áº GeekBrains áá¬áááœáẠá¡áááºá¡áá¬áááºááŒá¬ážáááºáááºážá
áá®á¡áá¯áá®á á¡ááŒá¬ážáá»ááºážáááºááŸá¯áá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºááŸá¯áá»á¬ážá ááá·áºá ááºáá±á¬ Kotlin ááŸáá·áº Android á¡ááá®áá±ážááŸááºážáá±á¬áºáááºááœáẠáááºááœá±á·ááá°áá¬áá»á¬ážá á¡áá±á·á¡áá»áá·áºá¡ááœááºá áá»á±á¬ááºážáá¬ážáá»á¬ážááẠá¡áá¬á¡á¬ážáá¯á¶ážááᯠáá¯ááºááá¯ážáá¯ááºá ááºáá»á¬ážááŸáá·áº áá»áááºáááºáá¬ážááá·áº á¡ááºááá®áá±ážááŸááºážááᯠááŒááááºááŒá áºáááºá á¡ááŸááºááŸá¬ á¡ááá®áá±ážááŸááºážá¡áá»á¬ážá á¯ááẠáá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž ááŒááºááŒááºáá¬ážáá¬áž ááŸáá·áº á¡ááŒáá¯ááºááœááºáá»ááºááŒááºáž ááŒá áºáááºá ááá¯á·áá±á¬áº Kotlin áá±á¬áºááá¯ážáááºáá»á¬ážááẠááŸá¯ááºááœá±ážáá±á¬á ááœá²ááœá²ááœá²ááŒá¬ážáá±á¬ ááá¯á·ááá¯áẠá¡ááœááºááŸá¯ááºááœá±ážááŒá®áž á áœááºážáá±á¬ááºáááº-ááá¯á¡ááºááá·áºáá¯ááºááᯠáá áºáá¯áááºážá áá¬ážáááºáááœááºáá°áá±á¬áá¯á¶á á¶ááá¯á· áá»áŸá±á¬á·áá»ááá¯ááºááŒá®áž ááŸááºáááºáá±á¬áá¯ááºáá±á¬ááºááŸá¯ááŸáá·áº á áœááºážáá±á¬ááºáááºá¡ááœáẠá¡áá»áá¯ážáá»á±ážáá°ážáá»á¬ážáááŸáá á±áááºá
áááºááœá±á·áá»áá±á¬ááŒá¿áá¬áá»á¬ážááá¯ááŒá±ááŸááºážáá±ážááá·áº coroutines áá»á¬ážááœáẠidiomatic áá¯ááºáá±ážááẠáááºáá°ááŒá®áž coroutines áááºááá¯á·á¡áá¯ááºáá¯ááºáá¯á¶ (RxJava áá²á·ááá¯á· á á¬ááŒáá·áºááá¯ááºáá»á¬ážá¡ááŒá±á¬ááºáž áááŒá±á¬ááá¯ááºáá«) ááᯠáááºáá²á áœá¬ááááá² ááááá áºáá»ááºááœáẠáá¬ážáááºááá¯ááºáá«áááºá MVI á¡áá°á¡áááŸá áá±áá¬ááá¯áá±á«ááºáá²á·ááá¯á·áá±á¬ ááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážáááºá¡ááœáẠááá¯ááºáá±á¬ááºáá±á¬áºáááºáá²á·ááá¯á·áá±á¬ ááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬ ááá±á¬ááá¬ážáá»á¬ážááᯠáááºááá¯á·á¡áá¯á¶ážááŒá¯ááááºááᯠáá»áœááºá¯ááºááá¯á·áááºáž áá¬ážáááºáááºááŒá áºáá«áááºá
á
áá¬ážáá
ááºá ááá¯ááŒá®ážááááºážáá±á¬ááºážá ááœá±ážáá»ááºááŸá¯á¡á¬áž ááŸááºáááºážáááºáá±áá»áááºááœááºá á¡áááºážááœááºáá±á«áºáá¬ááá·áº Kotlin Coroutines á
á¬ááŒáá·áºááá¯ááºá¡ááœáẠá¡ááºááááºáá
áºáᯠáá¯ááºááŒááºáá²á·áááºá Flow
- á¡áá»áá¯ážá¡á
á¬ážáá»á¬ážá analogue Flowable
О Observable
RxJava á០á¡ááºááááºááẠá¡ááŒá±áá¶á¡á¬ážááŒáá·áº á¡ááá®áá±ážááŸááºážáá±á¬á·ááºáá²áá±ážáá¬ážáá°áá¡ááŒááºá០coroutines á¡ááºá¹áá«áááºááᯠááŒá®ážááŒá±á¬ááºá
á±áááºá ááá¯ážáááºááŸá¯á¡ááœáẠáá±áá¬áá»ááºáá±ážáááº- kotlin/native ááœáẠáá±á¬áºááá¯áááºážáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážáá±á¬ááŒá±á¬áá·áº Kotlin ááœáẠmulti-platform applications áá»á¬ážááᯠáá±ážáá¬ážááá¯ááºáá±ááŒá®ááŒá
áºááŒá®áž ááá·áºá
ááºáá±á¬ Kotlin ááœáẠRxJava ááá¯á·ááá¯áẠanalogues áá»á¬ážáááŸáááŒááºážááŒá±á¬áá·áº ááá¶á
á¬ážááá«á kotlin/áá¬ááááŸá áá±á¬áºááá¯áááºážáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááŒáá·áºá
á¯á¶áá±ážáá«á á¥ááá¬á¡á¬ážááŒáá·áº ááá¯ááºáá±á¬ááºáá»á¬ážá á¡áá°á¡á áááŸááá«á áá±áá¯áá»á¡á¬ážááŒáá·áºá Kotlin á¡ááœá²á·ááẠááááºáá±á¬ááºážá¡á¬ážáá¯á¶ážááœáẠááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬ ááá¯ááºáá±á¬ááºáá»á¬ážááᯠáá¶á·ááá¯ážáá±ážááẠá¡á
á®á¡á
ááºáá»á¬ážááŸááááºá
Kotlin Coroutines - áááºážááá¯á·ááẠKotlin developer ááᯠáááºááá¯á·áá°áá®áááºáááºážá
Coroutines ááẠáááºááá¯ááºáá±á¬á ááááºážááááºážááá¯ááºáá±á¬á áá¯á¶ááŒá¯á¶áá±á¬á á¡ááŒáá¯ááºá¡ááá¯ááºá ááŸáá·áº áá°áá®áá±á¬áá¯ááºááᯠáá±ážáá¬ážááẠá¡ááœáá·áºá¡áá±ážáá±á¬ááºážáá áºáᯠáá±ážáá«áááºá áá¯ááºáá±á·á áºááœáẠáá¯á¶ážááŒá®ážáá¬ážááŒá áºááá¯ááºááá·áº á¡ááŒá¬ážáá±á¬ á¡áá»ááºááá±á¬áá±á¬ááºááá·áºáá±á¬ááºáá»á¬ážááŸáá·áº áá»ááºážáááºááŸá¯áá»á¬ážá¡ááœáẠá¡áááºáá¬áá»á¬ážááá¯áááºáž áááºáá®ážááá¯ááºáááºá
Coroutines ááẠá á¬ááœá²áá»á¬ážááŸáá·áº áááºááá¯á·ááœá¬ááŒá¬ážááááºážá
Kotlin á¡ááœá²á·ááẠcoroutines lightweight threads áá¯áá±á«áºáááºá ááá¯á·á¡ááŒááºá áá±á¬áºááá¯ážáááºážáá áºáá¯ááẠáááºááá¯ážáá áºáá»áá¯ážáá»áá¯ážááá¯á· ááŒááºáá±ážááá¯ááºáááºá áááºážááẠá áá áºááá¯ááºážáá»á¬ážáá±á«áºááœáẠááá¯ááºááá¯ááºáá°áááºááŒááºážáááŸááá«á ááá¯ááºážáá»á¬ážááẠáá±á¬áºááá¯ážáááºáá»á¬ážááá¯áᬠáá¯ááºáá±á¬ááºáá«áááºá
âá ááºááŒááºáá±á¬â Kotlin ááᯠá¡áá¯á¶ážááŒá¯á ááŒá±ááŸááºážááẠáááºáá²áá±á¬ Coroutine ááᯠá¡áá¯á¶ážááŒá¯á áááºááá·áºáááºááœá±á·ááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážááá¯ááºááááºážá
ááŒáá¯ááºáá°á á¡ááŒáá¯ááºá "ááŒáá¯ááºááá¯ááºááá¯ááºáááº" á¡áá¯ááºáá»á¬ážááᯠcoroutines áá»á¬ážááŒáá·áº ááŒá±ááŸááºážáá¬ážááẠ- áá¯á¶ážá áœá²áá°ááá áºáá»á¬ážááá¯áá¯ááºáá±á¬ááºááŒááºážá á¡áœááºááá¯ááºážáááºááŒááºáž ááá¯á·ááá¯áẠáá±áá¬áá±á·á áºááŸá¡ááºááááºáá»á¬ážááá¯á á¬áááºážááœááºážááŒááºážááá¯á·áá²ááŒá áºáá«á á±á
ááá·áºá ááºáá±á¬ Kotlin ááœááºá á€ááŒá¿áá¬áá»á¬ážááᯠJava ááœááºáá²á·ááá¯á·áá°áá®áá±á¬áááºážáááºážááŒáá·áºááŒá±ááŸááºážááẠ- áá°áá±á¬ááºáá±á¬ááºáá±á«ááºážáá»á¬ážá áœá¬áá¡áá°á¡áá®ááŒáá·áºá áá áºáá¯áá»ááºážá á®ááœááºáááºážáá¡á¬ážáá¬áá»ááºáá»á¬ážááŸáá·áºá¡á¬ážáááºážáá»ááºáá»á¬ážáá« á ááºáá±á¬áºáááºážáááºážááá¯á·á¡áááºááŸáá¬áá¬á áá¬ážá¡ááá·áºáá¶á·ááá¯ážááŸá¯áááŸááá«á
áááá¯á¶ážáá»á¯ááºá¡áá±ááŒáá·áºá ááœá±ážáá»ááºááŸá¯ ááŸá
áºáá¯á
áá¯á¶áž (ááŸáá·áº á¡ááá áááºáááºážáá»á¬áž ááá¯áááºáž) ááŒááºáá¡ááŒá±á¡áá±áá»á¬áž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááŸáá·áºá¡áá® ááœááºážáá¶ááŒááºáááºáááºáᯠááá¯ááá»áá¯ážáááºáá«áááºá á¡áá±ážááŒá®ážáá±á¬á¡ááºááááºáá»á¬ážááᯠáá¬áá¬á
áá¬ážáá»á¬áž ááá¯á·ááá¯áẠáá°áá±á¬ááºáá»á¬ážááœáẠáá±á«áºáá¬áá«áá ááá¬áá»á¬ážá áááºážááᯠááá·áºááœááºážá
ááºážá
á¬ážááŒá®áž áááá¯ááááºááᯠááŒá¯ááŒááºááœááºážáá¶áá«á á€á¡áá¬á¡á¬ážáá¯á¶ážááẠááá·áºá¡á¬áž ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¯ááºáááºážá
ááºá ááœá±ážáá¯ááºááŸá¯ááºážáá±á«áºááœáẠááá·áºáááºáá»á±á¬ááºážááᯠááááºážáá¬ážááá¯ááºá
á±áááºá á
áá¬ážááŒá±á¬áááºá¡ááœááºááŒá
áºáááºá
source: www.habr.com