Suspend kotlin ΡΡΠΎ ΡΡΠΎ
ΠΠΎΡΡΡΠΈΠ½Ρ
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΡΡΡΠΈΠ½Ρ
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΠΈ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΡΡΠ°Π»Π° Π½Π΅ΠΎΡΡΠ΅ΠΌΠ»ΠΈΠΌΠΎΠΉ ΡΠ΅ΡΡΠΎΠΉ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. Π Kotlin Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ. ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ? ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°Π΄Π°Ρ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ, Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Ρ ΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ Π΄Π΅ΡΠΊΡΠΎΠΏΠ° ΠΈΠ»ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. Π Π½Π°ΠΌ Π½Π°Π΄ΠΎ ΠΏΠΎ Π½Π°ΠΆΠ°ΡΠΈΡ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π·Π°ΠΏΡΠΎΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΡΡΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ Π·Π°ΠΏΡΠΎΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π½ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΡ. Π ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ Π·Π°Π²ΠΈΡΠ°Π»ΠΎ Π½Π° ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ Π·Π°ΠΏΡΠΎΡΠ°, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΡΡΡΡΠ°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. ΠΡΠΈ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ Π·Π°ΠΏΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ ΠΆΠ΄Π΅Ρ ΠΏΠΎΠΊΠ° ΠΏΡΠΈΠ΄Π΅Ρ ΠΎΡΠ²Π΅Ρ ΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΡΡΡΡΠ°, Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π° ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΎΡΠ²Π΅ΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅.
Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ Π½Π° ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ kotlinx.coroutines
ΠΡΠ΅ΠΆΠ΄Π΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΡΡΡΠΈΠ½ (Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° kotlinx.coroutines ) ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π½Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΠΏΡΠΎΠ΅ΠΊΡ. Π Π½Π°ΠΌ Π΅Π΅ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ. ΠΡΠ»ΠΈ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² IntelliJ IDEA, ΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Π² ΠΌΠ΅Π½Ρ File ΠΏΠ΅ΡΠ΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡΠ½ΠΊΡΡ Project Structure..
ΠΠΎΡΠ»Π΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π² ΡΠ·Π»Π΅ External Libraries / KotlinJavaRuntime ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ:
Π Π΄ΡΡΠ³ΠΈΡ ΡΠΈΠΏΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ kotlinx.coroutines ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Gradle ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ. Π’Π°ΠΊ, Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Gradle, ΡΠΎ Π² ΡΠ°ΠΉΠ» gradle Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ:
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ suspend-ΡΡΠ½ΠΊΡΠΈΠΈ
Π‘Π½Π°ΡΠ°Π»Π° ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΊΠΎΡΡΡΠΈΠ½Ρ:
ΠΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΡΠΈΠΊΠ»Π° Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΊΠΎΠ½ΡΠΎΠ»Ρ ΡΡΡΠΎΠΊΡ «Hello Coroutines».
ΠΡΠ»ΠΈ ΠΌΡ Π·Π°ΠΏΡΡΡΠΈΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΎ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄:
ΠΠ΄Π΅ΡΡ ΠΌΡ Π²ΠΈΠ΄ΠΈΠΌ, ΡΡΠΎ ΡΡΡΠΎΠΊΠ° «Hello Coroutines» Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°. ΠΠΎ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΈΠΊΠ»Π° Ρ Π½Π°Ρ ΠΌΠΎΠ³Π»Π° Π±Ρ Π±ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅Π»ΡΠ½Π°Ρ, Π½ΠΎ ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ΅ΡΡΡΡΡ, ΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ Ρ.Π΄. Π Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΎΠΆΠΈΠ΄Π°Π»ΠΈ Π±Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, ΠΊΠ°ΠΊ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠΎΠΊΠ° «Hello Coroutines» ΠΆΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π°.
ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ
ΠΈ Π·Π°ΠΏΡΡΠΊΠ΅Ρ ΡΡΡ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. Π’ΠΎ Π΅ΡΡΡ Π΄Π°Π½Π½Π°Ρ ΠΊΠΎΡΡΡΠΈΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΠΏΡΠΎΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ main.
Π ΠΈΡΠΎΠ³Π΅ ΠΏΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΡ ΡΠ²ΠΈΠ΄ΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄:
Π’Π΅ΠΏΠ΅ΡΡ ΡΡΡΠΎΠΊΠ° «Hello Coroutines» Π½Π΅ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ, ΠΏΠΎΠΊΠ° Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΡΠΈΠΊΠ», Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Ρ Π½ΠΈΠΌ.
ΠΡΠ½Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΊΠΎΡΡΡΠΈΠ½ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ
ΠΡΡΠ΅ ΠΊΠΎΠ΄ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Π»ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΠΈ main. ΠΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Π² ΠΊΠΎΡΡΡΠΈΠ½Π΅ ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ:
ΠΠΎΡΡΡΠΈΠ½Ρ ΠΈ ΠΏΠΎΡΠΎΠΊΠΈ
Π ΡΡΠ΄Π΅ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊΠΈ. ΠΠ΄Π½Π°ΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΡΡΡΠΈΠ½Π°ΠΌΠΈ ΠΈ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ Π½Π΅Ρ ΠΏΡΡΠΌΠΎΠ³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ. ΠΠΎΡΡΡΠΈΠ½Π° Π½Π΅ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π° ΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌΡ ΠΏΠΎΡΠΎΠΊΡ. ΠΠ½Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, Π° Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² Π΄ΡΡΠ³ΠΎΠΌ.
Π£ΡΠΎΠΊ 1. ΠΠΎΡΡΡΠΈΠ½Ρ. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ Π½Π°ΡΠ½Π΅ΠΌ ΡΠ°Π·Π±ΠΈΡΠ°ΡΡΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Π° ΠΈ suspend ΡΡΠ½ΠΊΡΠΈΡ.
Π‘Π»ΠΎΠΆΠ½Π°Ρ ΡΠ΅ΠΌΠ°
ΠΠ΅ ΡΠ°Π· Ρ ΡΠ»ΡΡΠ°Π» ΠΌΠ½Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠΎ ΠΊΠΎΡΡΡΠΈΠ½Π°ΠΌ ΡΠ»ΠΎΠΆΠ½Π° ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°ΠΊΠΎΠ΅:
Π―, ΠΏΠΎΠΆΠ°Π»ΡΠΉ, ΡΠΎΠ³Π»Π°ΡΡΡΡ Ρ ΡΡΠΈΠΌ ΠΌΠ½Π΅Π½ΠΈΠ΅ΠΌ. ΠΠ°Ρ ΡΡΠ°Π·Ρ Π³ΡΡΠ·ΡΡ Π±ΠΈΠ»Π΄Π΅ΡΠ°ΠΌΠΈ, ΡΠΊΠΎΡΠΏΠ°ΠΌΠΈ ΠΈ suspend ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ. ΠΠΎΠ²ΠΎΡΡΡ, ΡΡΠΎ ΠΈΡ Π½Π°Π΄ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊ-ΡΠΎ ΠΈ ΡΠ°ΠΊ-ΡΠΎ ΠΈ Π±ΡΠ΄Π΅Ρ Π½Π°ΠΌ ΡΡΠ°ΡΡΡΠ΅. Π Π²ΡΠΎΠ΄Π΅ Π΄Π°ΠΆΠ΅ ΠΎΠ±ΡΡΡΠ½ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅, Π½ΠΎ ΠΎΡΠΎΠ±ΠΎ ΠΏΠΎΠ½ΡΡΠ½Π΅Π΅ Π½Π΅ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ. ΠΠΎ Π΄Π°ΠΆΠ΅ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΡΠΎ Ρ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π²Π°ΠΌ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΡΡΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Ρ ΠΎΡΡ Π±Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΈ Π·Π°ΡΠ΅ΠΌ ΠΎΠ½ΠΈ Π½ΡΠΆΠ½Ρ.
ΠΠΎΡΡΠΎΠΌΡ ΠΏΠ΅ΡΠ²ΡΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎΠΊΠΎΠ² Π±ΡΠ΄ΡΡ ΡΠΎΡΡΠΎΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠΉ. Π― ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠΎΠΌ, Π²ΠΎ ΡΡΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊΠΎΡΡΡΠΈΠ½Π° ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Kotlin ΠΊΠΎΠ΄Π° Π² Java. Π ΡΠ°ΠΊΠΆΠ΅ ΠΎ ΡΠΎΠΌ, ΠΏΠΎΡΠ΅ΠΌΡ suspend ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ. ΠΠ± ΡΡΠΎΠΌ Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ²ΡΠ΅ 5 ΡΡΠΎΠΊΠΎΠ². Π ΡΠΆΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠΉΠ΄ΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΡΠ΅ ΠΊ ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ ΡΠ΅ΠΌΡ: Scope, Context, Job ΠΈ Ρ.ΠΏ.
Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡ Π½Π΅ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ ΡΡΠΎΠΊΠΈ ΠΈ ΠΈΠ΄ΡΠΈ ΠΏΠΎ Π½ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ Π² ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΠΎΠΊΠ°Ρ Π²ΡΠ΅ Π±ΡΠ»ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΠΎ. Π Π΅ΡΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΡΠΎΠΊ ΠΈΠ»ΠΈ ΡΠ°Π·Π΄Π΅Π» ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ, Ρ ΡΠ²Π½ΠΎ Π½Π°ΠΏΠΈΡΡ ΠΎΠ± ΡΡΠΎΠΌ.
ΠΡΠ°ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΡΡΠΎΠΊΠΎΠ²
Π ΡΡΠΎΠΌ ΠΊΡΡΡΠ΅ Ρ Π±ΡΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊΡ ΠΏΠΎΠ΄Π°ΡΠΈ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°. ΠΡΠ»ΠΈ ΡΡΠΎΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΅ΠΎΡΠΈΠΈ ΠΈ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠΉ, ΡΠΎ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π΅Π³ΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π΄Π²ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²: ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΡΠ°ΡΠΊΠΎΠΌ.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ Π² ΡΠ΅ΠΌΠ΅ Π½ΠΎΠ²ΠΈΡΠΎΠΊ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠ΅ΠΌΡ. ΠΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΠΌΡΡΠ»Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π· Ρ ΡΠ°Π·Π½ΡΡ ΡΡΠΎΡΠΎΠ½ Π΄Π»Ρ Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ. Π§ΠΈΡΠ°ΡΡ Π½Π°Π΄ΠΎ Π΄ΠΎΠ»Π³ΠΎ ΠΈ Π²Π΄ΡΠΌΡΠΈΠ²ΠΎ. Π ΡΡΠΎΠΌ ΡΡΠΈΠ»Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΠΎΠΈΡ ΡΡΠΎΠΊΠΎΠ² Π½Π° ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΡΠ΅ΠΌΡ.
ΠΡΠ°ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠΆΠ΅ Ρ ΠΎΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Π·Π½Π°ΠΊΠΎΠΌ Ρ ΡΠ΅ΠΌΠΎΠΉ. Π ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Ρ , ΠΊΡΠΎ ΡΠ°Π½Π΅Π΅ ΡΠΆΠ΅ ΠΏΡΠΎΡΠ΅Π» ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈ Π·Π°ΡΠ΅Π» ΠΏΡΠΎΡΡΠΎ ΠΎΡΠ²Π΅ΠΆΠΈΡΡ Π·Π½Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΡΠΌΠΎΡΡΠ΅ΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ. Π’ΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠΉ ΠΈ Π΄ΠΎΠ»Π³ΠΎΠ³ΠΎ Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π²ΠΎΠΊΡΡΠ³ ΡΠ΅ΠΌΡ. ΠΡΠ΅ Π»Π°ΠΊΠΎΠ½ΠΈΡΠ½ΠΎ ΠΈ ΡΠ΅Π·ΠΈΡΠ½ΠΎ.
ΠΡΠ±ΠΈΡΠ°ΠΉΡΠ΅ Π²Π°ΡΠΈΠ°Π½Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π²Π°ΠΌ. ΠΠΎΠΆΠ΅ΡΠ΅ ΡΡΠ°Π·Ρ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ ΠΊΡΠ°ΡΠΊΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠ»ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΠΈ Π½ΡΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π΄ΡΠΌΡΠΈΠ²ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅, ΡΠΎ Π·Π°Π²Π°ΡΠΈΠ²Π°ΠΉΡΠ΅ ΠΊΡΡΠΆΠΊΡ ΡΠ°Ρ, Π±Π΅ΡΠΈΡΠ΅ ΠΏΠ»Π΅Π΄ ΠΈ ΠΎΡΠΊΡΡΠ²Π°ΠΉΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ)
ΠΡΠ° ΠΎΠΏΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΠΉΡΠ°. Π― ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π» Π² ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΡΠΌ, ΠΆΠ΄Ρ ΠΎΡΠ²Π΅ΡΠ°. Π ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΡ Π²Π΅ΡΡΠΈΡ.
ΠΠΎΡΡΡΠΈΠ½Π°
ΠΠ΅ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ°ΡΡ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Π°. Π ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΡΠΎΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ² Π²ΡΠ΄Π΅ΡΠ½ΡΡΡ ΠΈΠ· ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° ΠΈ Π½Π΅ Π±ΡΠ΄ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΠΎ Π² ΡΠ΅Π»ΡΡ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΎΡΠΈΠΈ ΠΎΠ½ΠΈ Π½Π°ΠΌ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ. ΠΡΠ°ΠΊΡΠΈΠΊΠ° Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ·ΠΆΠ΅.
ΠΡ Π΅ΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΈ ΠΏΠΎ ΡΠ°Π³Π°ΠΌ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ Π±ΠΈΠ»Π΄Π΅ΡΠ°. Π ΠΏΠΎΠΊΠ° ΡΡΠΎ Π½Π°ΠΌ Π½Π°Π΄ΠΎ Π·Π½Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠΎ, ΡΡΠΎ Π±ΠΈΠ»Π΄Π΅Ρ ΡΠΏΠ°ΠΊΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π½Π½ΡΠΉ Π΅ΠΌΡ Π±Π»ΠΎΠΊ ΠΊΠΎΠ΄Π° Π² ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡ Π΅Π΅. ΠΡΠ»ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²Ρ ΠΎΠ΄Π½ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ Π±ΠΈΠ»Π΄Π΅ΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄.
ΠΡΠΎ Π΄Π°Π΅Ρ Π½Π°ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΠ½ΠΎΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ (LAZY) ΠΈ ΡΡΠ°ΡΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ. ΠΠ»ΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΡΡΡΠΈΠ½Ρ Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΡΡΠΈΠ½Ρ. ΠΡ Π΄ΠΆΠΎΠ±Ρ Π±ΡΠ΄ΡΡ ΡΠ²ΡΠ·Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ Parent-Child, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΡΠΌΠ΅Π½Ρ ΠΊΠΎΡΡΡΠΈΠ½. ΠΡΠ΅ ΡΡΠΎ ΠΌΡ Π΅ΡΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠΈΡ ΡΡΠΎΠΊΠ°Ρ .
Suspend ΡΡΠ½ΠΊΡΠΈΡ
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΌΡ Π² ΠΊΠΎΡΡΡΠΈΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ suspend ΡΡΠ½ΠΊΡΠΈΡ delay. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° 1000 ΠΌΡΠ΅ΠΊ, Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΡ ΠΈ Π½Π°ΠΏΠΈΡΠ΅Ρ Π² Π»ΠΎΠ³ ΡΠ»ΠΎΠ²ΠΎ World. ΠΡΠΎΠ΄Π΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ. ΠΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ Π½Π°ΠΏΠΈΡΠ°Π» «ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°», Π° Π½Π΅ «Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ».
Π ΡΡΠΎΠΌ ΠΈ Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ suspend ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΠ½Π° Π½Π΅ Π±Π»ΠΎΡΠΈΡ ΠΏΠΎΡΠΎΠΊ. Π Π·Π½Π°ΡΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡ ΠΊΠΎΡΡΡΠΈΠ½Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π² main ΠΏΠΎΡΠΎΠΊΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ delay ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° 1 ΡΠ΅ΠΊΡΠ½Π΄Ρ, Π½ΠΎ Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ main ΠΏΠΎΡΠΎΠΊ.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΡΠΉ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π°.
ΠΠΎΠ΄ Π±Π΅Π· Π²ΡΡΠΊΠΈΡ ΠΊΠΎΡΡΡΠΈΠ½ ΠΈ suspend ΡΡΠ½ΠΊΡΠΈΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
ΠΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ URL ΡΠ°ΠΉΠ»Π° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ download, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Toast-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΉΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½.
Π Ρ ΠΎΡΠΎΡΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π΄ΠΎΠ»Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π»Π° ΠΏΠΎΡΠΎΠΊ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π±ΡΠ» Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π±Π΅Π· Π²ΡΡΠΊΠΈΡ ΠΊΠΎΠ»Π±ΡΠΊΠΎΠ². ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ suspend ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΊΠΎΡΡΡΠΈΠ½Π°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ.
ΠΠ΅ΡΠ΅ΠΏΠΈΡΠ΅ΠΌ ΠΊΠΎΠ΄ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΈ suspend ΡΡΠ½ΠΊΡΠΈΠΈ:
ΠΡΠ° ΠΊΠΎΡΡΡΠΈΠ½Π° Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ Π΅Π΅ ΠΊΠΎΠ΄. Π’.Π΅. Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΡΠΈΡΡ Π΄Π°ΠΆΠ΅ Π² main ΠΏΠΎΡΠΎΠΊΠ΅. Π€ΡΠ½ΠΊΡΠΈΡ download Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΠ°ΠΉΠ» Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅, Π° toast Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ download ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
ΠΡΠΎ ΠΊΠ°ΠΆΠ΅ΡΡΡ ΠΌΠ°Π³ΠΈΠ΅ΠΉ, Π½ΠΎ Π½Π΅ Π·Π°Π±ΡΠ²Π°ΠΉΡΠ΅, ΡΡΠΎ Kotlin ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ Π² Java ΠΊΠ»Π°ΡΡΡ. Π Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ Continuation. ΠΠ½ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ suspend ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΊΠΎΠ»Π±ΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ toast ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π° Π±ΡΠ΄Π΅Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½Π°.
Π ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠΎΠΊΠ΅.
ΠΠΎΡΡΡΠΈΠ½Π°
Π ΡΠ°ΠΌΠΎΠΌ Π½Π°ΡΠ°Π»Π΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ ΡΡΠ°ΡΠ΅ΠΉ ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
ΠΠΎΠ³Π΄Π° ΠΌΡ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ ΠΊΠΎΡΡΡΠΈΠ½Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Job, ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π·Π°ΠΏΡΡΠΊΠ° Π±ΠΈΠ»Π΄Π΅ΡΠ°:
ΠΡΠΎ Π΄Π°Π΅Ρ Π½Π°ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΡΡΠΈΠ½ΠΎΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ (lazy) ΠΈ ΡΡΠ°ΡΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ. ΠΠ»ΠΈ Π² Π»ΡΠ±ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΊΠΎΡΡΡΠΈΠ½Ρ Π²Π½ΡΡΡΠΈ ΠΊΠΎΡΡΡΠΈΠ½Ρ. ΠΡ Π΄ΠΆΠΎΠ±Ρ Π±ΡΠ΄ΡΡ ΡΠ²ΡΠ·Π°Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡΠΌΠΈ Parent-Child, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΡΠΌΠ΅Π½Ρ ΠΊΠΎΡΡΡΠΈΠ½.
Suspend ΡΡΠ½ΠΊΡΠΈΡ
Π ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ ΠΌΡ Π² ΠΊΠΎΡΡΡΠΈΠ½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ suspend ΡΡΠ½ΠΊΡΠΈΡ delay. ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π½Π° 1000 ΠΌΡΠ΅ΠΊ, Π·Π°ΡΠ΅ΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡΡ ΠΈ Π½Π°ΠΏΠΈΡΠ΅Ρ Π² Π»ΠΎΠ³ ΡΠ»ΠΎΠ²ΠΎ World. ΠΡΠΈ ΡΡΠΎΠΌ delay Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ. Π ΡΡΠΎΠΌ ΠΈ Π΅ΡΡΡ ΠΊΠ»ΡΡΠ΅Π²Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ suspend ΡΡΠ½ΠΊΡΠΈΠΉ. Π Π·Π½Π°ΡΠΈΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΡΡ ΠΊΠΎΡΡΡΠΈΠ½Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π² main ΠΏΠΎΡΠΎΠΊΠ΅.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ, Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΡΠΉ ΠΊ ΡΠ΅Π°Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π°.
ΠΠΎΠ΄ Π±Π΅Π· Π²ΡΡΠΊΠΈΡ ΠΊΠΎΡΡΡΠΈΠ½ ΠΈ suspend ΡΡΠ½ΠΊΡΠΈΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°ΠΊΠΈΠΌ:
ΠΡ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌ URL ΡΠ°ΠΉΠ»Π° ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π² ΡΡΠ½ΠΊΡΠΈΡ download, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΡ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΌΡ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ Toast-ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΡΠ°ΠΉΠ» Π·Π°Π³ΡΡΠΆΠ΅Π½.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ suspend ΡΡΠ½ΠΊΡΠΈΠΉ Π² ΠΊΠΎΡΡΡΠΈΠ½Π°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π½Π°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π΄ΠΎΠ»Π³ΠΈΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· ΠΊΠΎΠ»Π±ΡΠΊΠΎΠ²:
ΠΡΠ° ΠΊΠΎΡΡΡΠΈΠ½Π° Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½Π° Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½Π°. Π toast Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ download ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Continuation, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΈ Kotlin ΠΊΠΎΠ΄Π° Π² Java ΠΊΠ»Π°ΡΡΡ.
Π ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠΎΠΊΠ΅.
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π½Π°ΠΌ Π² Telegram:
— Π² ΠΊΠ°Π½Π°Π»Π΅ StartAndroid ΠΏΡΠ±Π»ΠΈΠΊΡΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΠΎΠ²ΡΠ΅ ΡΡΠ°ΡΡΠΈ Ρ ΡΠ°ΠΉΡΠ° startandroid.ru ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Ρ Ρ Π°Π±ΡΠ°, medium.com ΠΈ Ρ.ΠΏ.
— Π² ΡΠ°ΡΠ°Ρ ΡΠ΅ΡΠ°Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΡΠ΅ΠΌΠ°ΠΌ: Android, Kotlin, RxJava, Dagger, Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
— Π½Ρ ΠΈ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΡΠΎ Π΅ΡΡΡ ΡΠ°Ρ Π€Π»ΡΠ΄ΠΈΠ»ΡΠ½Ρ
— Π½ΠΎΠ²ΡΠΉ ΡΠ°Ρ Performance Π΄Π»Ρ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π΄Π»Ρ Π²Π°ΡΠΈΡ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΠΉ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΠΊΡΡΡΠ° ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅
ΠΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π°Π²ΡΠΎΡΡ Π·Π° ΡΡΠΎΡ ΠΊΡΡΡ. Π’Π΅ΠΌΠ° Π²ΡΠ±ΡΠ°Π½Π° ΠΏΡΠΎΡΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ, ΠΈΠ±ΠΎ Ρ ΡΡΠΈΡΠ°Ρ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΡΠ°ΠΌΠΎΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΡΡ ΠΊΠΎΡΠ»ΠΈΠ½Π° (Π΅ΡΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΎΠ±ΡΠ΅Π·ΠΊΠΈ ΠΎΡ Π΄ΠΆΠ΅Π½Π΅ΡΠΈΠΊΠΎΠ², Π½ΠΎ ΡΠΎ ΡΠ°ΠΊΠ΅) ΠΈ Π΄Π°Π²Π½ΠΎ Ρ ΠΎΡΠ΅Π» Ρ ΡΡΠΈΠΌ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ. Π Π°Π΄ ΡΡΠΎ Π·Π°ΡΠΊΠΎΡΠΈΠ» ΡΡΠ΄Π° ΠΈ ΡΠ²ΠΈΠ΄Π΅Π» ΡΡΠΎ Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΊΡΡΡ.
Π£ΡΠΎΠΊ 3. ΠΠΎΡΡΡΠΈΠ½Ρ. Suspend ΡΡΠ½ΠΊΡΠΈΠΈ
Π ΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ suspend ΡΡΠ½ΠΊΡΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ, ΠΊΠ°ΠΊ ΠΊΠΎΡΡΡΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ΅ΡΡΡΡΡΡ ΠΈ Π·Π°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ»ΠΎΠ²ΠΎ suspend.
Π ΠΏΡΠΎΡΠ»ΠΎΠΌ ΡΡΠΎΠΊΠ΅ ΠΌΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π»ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Continuation ΠΈ suspend ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ Continuation. Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΡΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΎ ΡΡΠΎΡΠΎΠ½Ρ suspend ΡΡΠ½ΠΊΡΠΈΠΉ.
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ suspend ΡΡΠ½ΠΊΡΠΈΡ
Π‘Π΅ΠΉΡΠ°Ρ ΠΌΡ Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ suspend ΡΡΠ½ΠΊΡΠΈΡ ΠΈΠ· Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ ΠΆΠ΅ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ ΠΈ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ suspend, ΡΠΎ ΡΠ°ΠΌ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π±ΠΈΠ»Π΄Π΅Ρ withContext. ΠΠ± ΡΡΠΎΠΌ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ, ΠΊΠΎΠ³Π΄Π° Π½Π°ΡΠ½Π΅ΠΌ ΡΠ΅ΠΌΡ Π±ΠΈΠ»Π΄Π΅ΡΠΎΠ².
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ suspend ΡΡΠ½ΠΊΡΠΈΡ download, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΠ°Π½Π΅Π΅ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ°Ρ .
ΠΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ Π½Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΊΠΈΠΉ NetworkService, ΠΊΠΎΡΠΎΡΡΠΉ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ ΡΠΌΠ΅Π΅Ρ Π·Π°Π³ΡΡΠΆΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ. Π ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΎΠ±Π΅ΡΠ½ΡΡΡ Π΅Π³ΠΎ Π² suspend ΡΡΠ½ΠΊΡΠΈΡ download:
Π ΠΊΠΎΠ»Π±ΡΠΊ onSuccess ΠΏΡΠΈΠ΄Π΅Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠΉ ΡΠ°ΠΉΠ».
ΠΠ°ΠΊ Π²Ρ ΠΏΠΎΠΌΠ½ΠΈΡΠ΅ ΠΈΠ· ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ ΡΡΠΎΠΊΠ°, suspend ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π² Continuation.invokeSuspend. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Continuation.resume
ΠΡΡΠ°Π»ΠΎΡΡ Π³Π΄Π΅-ΡΠΎ Π²Π·ΡΡΡ continuation. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ suspendCoroutine.
ΠΠ΅ΡΡ Π½Π°Ρ ΠΊΠΎΠ΄ ΡΡ ΠΎΠ΄ΠΈΡ Π² Π±Π»ΠΎΠΊ suspendCoroutine. ΠΡΠΎΡ Π±Π»ΠΎΠΊ Π΄Π°Π΅Ρ Π½Π°ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ continuation, Π² ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΡ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ networkService.download.
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ suspend ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΠ»Π° Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π»Π° Π² continuation.resume, Π° ΡΠΎΡ ΡΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ Π² continuation.invokeSuspend.
ΠΠΎΠ·Π²ΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠΈ
ΠΡΠΎΠΌΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°, continuation ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΡΡΡΡ Ρ NetworkService.Callback Π΅ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ onFailure. ΠΠ½ Π±ΡΠ΄Π΅Ρ Π²ΡΠ·Π²Π°Π½, Π΅ΡΠ»ΠΈ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ»Π° ΠΎΡΠΈΠ±ΠΊΠ°. Π Π½Π΅ΠΌ ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄ continuation.resumeWithException ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΄ΠΈΠΌ ΡΡΠ΄Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅.
Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ ΠΏΠΎΠΉΠ΄Π΅Ρ Π² ΠΌΠ΅ΡΠΎΠ΄ invokeSuspend, Π° Π±ΡΠ΄Π΅Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π° ΠΊΠΎΡΡΡΠΈΠ½ΠΎΠΉ. Π’.Π΅. Π² ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ continuation Π½Π΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ ΡΠ²ΠΎΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΊΠΎΡΡΡΠΈΠ½Π΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅ suspend ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½.
ΠΡΠΎΡΡΠ°Ρ suspend ΡΡΠ½ΠΊΡΠΈΡ download Π³ΠΎΡΠΎΠ²Π°. ΠΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ Π² ΠΊΠΎΡΡΡΠΈΠ½Π΅, ΠΎΠ½Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ, Π½ΠΎ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΊΠΎΠ΄.
ΠΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΡΠ°Π·Ρ Π²Π΅ΡΠ½ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ°ΠΊ Π² Kotlin Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² suspend ΡΡΠ½ΠΊΡΠΈΡ ΡΠ°ΠΊΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ:
ΠΡ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΉΠ» ΠΈΠ· ΠΊΡΡΠ°. ΠΡΠ»ΠΈ ΠΎΠ½ ΡΠ°ΠΌ Π΅ΡΡΡ, ΡΠΎ ΡΡΠ°Π·Ρ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π² continuation, ΠΈΠ½Π°ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΡΠ°Π±ΠΎΡΡ.
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ°
ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ suspend ΡΡΠ½ΠΊΡΠΈΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΈΠ»ΠΈ Π²Π΅ΡΠ½ΡΠ»Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠ°Π·Ρ. ΠΡΠ»ΠΈ ΠΆΠ΅ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ Π² suspend ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠΎΠ΄, Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠΎ ΡΠ»ΠΎΠ²ΠΎ suspend Π½Π°ΠΌ ΡΡΡ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ. Π’Π°ΠΊΠ°Ρ suspend ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΎΡΡΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΡΡΡΠΈΠ½Π°.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ suspend ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π²ΡΡΠ΅ NetworkService ΡΠ΅ΠΏΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ. ΠΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ download Π½Π΅ ΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΠΈ Π½Π΅ ΠΏΡΠΎΡΠΈΡ ΠΊΠΎΠ»Π±ΡΠΊ, Π° Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ ΡΠ°ΠΉΠ» Π² ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΊΠ°ΠΊ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π°. Π’.Π΅. ΠΌΠ΅ΡΠΎΠ΄ networkService.download Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ Π²ΡΠ·Π²Π°Π½. ΠΡΠ»ΠΈ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΅Π³ΠΎ Π½Π°ΠΏΡΡΠΌΡΡ Π² suspend ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ suspend ΡΡΠ½ΠΊΡΠΈΡ:
ΠΠ°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ, ΡΡΠΎ Π½ΠΈ ΠΌΠ΅ΡΠΎΠ΄ suspendCoroutine, Π½ΠΈ ΡΠ»ΠΎΠ²ΠΎ suspend Π² ΠΎΠΏΠΈΡΠ°Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π΅ cΠ΄Π΅Π»Π°ΡΡ Π½Π°Ρ ΠΊΠΎΠ΄ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΌ. ΠΠ΅ΡΠΎΠ΄ networkService.download Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ Π² ΠΏΠΎΡΠΎΠΊΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ ΠΈ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ. ΠΠΎΡΡΠΎΠΌΡ ΠΎΡ Π½Π°Ρ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΡΡΡ ΠΊΠΎΠ΄Π° Π² suspend ΡΡΠ½ΠΊΡΠΈΠΈ, Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΊΠΎΠ»Π±ΡΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ continuation.
Π ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π² ΠΊΠΎΡΡΡΠΈΠ½Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ ΠΊΠΎΡΡΡΠΈΠ½Ρ, ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΏΠΎΠ·ΠΆΠ΅, ΠΊΠΎΠ³Π΄Π° Π±ΡΠ΄Π΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Π±ΠΈΠ»Π΄Π΅ΡΡ.
ΠΠΎΡΠ΅ΡΡΠ½Π½Π°Ρ ΠΊΠΎΡΡΡΠΈΠ½Π°
ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ»ΠΎΠ²ΠΎ suspend?
Π’Π΅ΠΏΠ΅ΡΡ ΠΌΡ Π·Π½Π°Π΅ΠΌ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎ suspend ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΈ ΡΠ»ΠΎΠ²Π° suspend. Π‘Π°ΠΌΠΎ ΠΏΠΎ ΡΠ΅Π±Π΅ ΡΡΠΎ ΡΠ»ΠΎΠ²ΠΎ Π½Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ ΡΡΠ½ΠΊΡΠΈΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ. ΠΠ½ΠΎ Π½Π΅ ΡΠ΄Π΅Π»Π°Π΅Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π²Π΄ΡΡΠ³ ΠΏΠ΅ΡΠ΅ΡΡΠ°Π» Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠΎΠΊ. ΠΠ½ΠΎ Π²ΠΎΠΎΠ±ΡΠ΅ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ ΠΌΠ°ΡΠΊΠ΅Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π°Π½Π½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠΌΠ΅Π΅Ρ (ΠΈ Π΄ΠΎΠ»ΠΆΠ½Π°) ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Continuation, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡ ΠΏΠΎΡΠΎΠΊ.
ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΡΡΠΎ Ρ Π΄Π²ΡΡ ΡΠΎΡΠ΅ΠΊ Π·ΡΠ΅Π½ΠΈΡ: ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ suspend ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅.
Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅
Π§ΡΠΎΠ±Ρ suspend ΡΡΠ½ΠΊΡΠΈΡ ΠΌΠΎΠ³Π»Π° ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΊΠΎΠ΄ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΡ ΠΏΠΎΡΠΎΠΊ, Π΅ΠΉ Π½ΡΠΆΠ΅Π½ Continuation, Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΎΠ½Π° Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ ΠΏΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ. Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Continuation, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ suspendCoroutine. ΠΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π²ΠΎΠΏΡΠΎΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π»ΡΠ±Π°Ρ Π΄ΡΡΠ³Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅Π· ΡΠ»ΠΎΠ²Π° suspend Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ? ΠΠ°Π²Π°ΠΉΡΠ΅ Π΄ΠΎΠΏΡΡΡΠΈΠΌ, ΡΡΠΎ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΡ (Π½Π΅ suspend) ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Π²ΡΠ·Π²Π°ΡΡ Π² Π½Π΅ΠΉ suspendCoroutine, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡ Π½Π°ΠΌ Continuation. ΠΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ ΡΠ°ΠΊΡΡ ΡΡΠ½ΠΊΡΠΈΡ Π² ΠΊΠΎΡΡΡΠΈΠ½Π΅, ΡΠΎ Π²ΡΠ΅ ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΠΊΠΎΡΡΡΠΈΠ½Ρ Π΅ΡΡΡ Continuation. ΠΠ³ΠΎ ΠΌΡ ΠΈ ΠΏΠΎΠ»ΡΡΠΈΠΌ. ΠΠΎ Π΅ΡΠ»ΠΈ ΠΌΡ Π²ΡΠ·ΠΎΠ²Π΅ΠΌ Π΅Π΅ Π²Π½Π΅ ΠΊΠΎΡΡΡΠΈΠ½Ρ, ΡΠΎ suspendCoroutine Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π½Π°ΠΌ Continuation, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π΅Π³ΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅Ρ.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅
ΠΡΠ»ΠΈ ΠΌΡ Π² ΠΊΠΎΡΡΡΠΈΠ½Π΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΎΠ»Π³ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠ΅ΡΠ΅Π½Π° ΠΊΠ°ΠΊ suspend, ΡΠΎ ΠΌΡ ΡΠΎΡΠ½ΠΎ Π·Π½Π°Π΅ΠΌ, ΡΡΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡ ΠΊΠΎΠ΄ ΠΈ Π½Π΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠΎΡΡΡΠΈΠ½Π°. ΠΡΠ»ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΎΠ½Π° Π½Π°ΠΏΠΈΡΠ°Π½Π° ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ)
Π ΠΎΠ±ΡΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ suspend, Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠ½Π° Π»ΠΈΠ±ΠΎ Π·Π°Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ ΠΊΠΎΡΡΡΠΈΠ½Ρ, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠΏΡΠΎΡΠΈΡ Π΄Π°ΡΡ Π΅ΠΉ ΠΊΠΎΠ»Π±ΡΠΊ.
Π§ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²Π½ΡΡΡΠΈ suspendCoroutine?
ΠΠ± ΡΡΠΎΠΌ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ°ΡΡΠΊΠ°ΠΆΡ Π² ΠΏΡΡΠΎΠΌ ΡΡΠΎΠΊΠ΅.
ΠΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠΉΡΠ΅ΡΡ ΠΊ Π½Π°ΠΌ Π² Telegram:
— Π² ΠΊΠ°Π½Π°Π»Π΅ StartAndroid ΠΏΡΠ±Π»ΠΈΠΊΡΡΡΡΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π½ΠΎΠ²ΡΠ΅ ΡΡΠ°ΡΡΠΈ Ρ ΡΠ°ΠΉΡΠ° startandroid.ru ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ Ρ Ρ Π°Π±ΡΠ°, medium.com ΠΈ Ρ.ΠΏ.
— Π² ΡΠ°ΡΠ°Ρ ΡΠ΅ΡΠ°Π΅ΠΌ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΡΠ΅ΠΌΠ°ΠΌ: Android, Kotlin, RxJava, Dagger, Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅
— Π½Ρ ΠΈ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Ρ ΠΎΡΠ΅ΡΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΡΡ Ρ ΠΊΠΎΠ»Π»Π΅Π³Π°ΠΌΠΈ ΠΏΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅, ΡΠΎ Π΅ΡΡΡ ΡΠ°Ρ Π€Π»ΡΠ΄ΠΈΠ»ΡΠ½Ρ
— Π½ΠΎΠ²ΡΠΉ ΡΠ°Ρ Performance Π΄Π»Ρ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π΄Π»Ρ Π²Π°ΡΠΈΡ ΠΏΠΎΠΆΠ΅Π»Π°Π½ΠΈΠΉ ΠΏΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΠΊΡΡΡΠ° ΠΏΠΎ ΡΡΠΎΠΉ ΡΠ΅ΠΌΠ΅
ΠΡΠ½ΠΎΠ²Ρ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠ°ΡΠ° ΠΏΠ΅ΡΠ²Π°Ρ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
Π Π΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ:
ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ delay ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊ, Π° ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π‘Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠΈΠΉ ΠΌΠΈΡΡ
Π’Π°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ:
Π‘ΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ
ΠΡΡΡ Π±ΠΎΠ»Π΅Π΅ Π»ΡΡΡΠ΅Π΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅. Π Π½Π°ΡΠ΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ. ΠΠΌΠ΅ΡΡΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π² GlobalScope, ΠΊΠ°ΠΊ ΠΌΡ ΠΎΠ±ΡΡΠ½ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ (ΠΏΠΎΡΠΎΠΊΠΈ Π²ΡΠ΅Π³Π΄Π° Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅), ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ Π½Π°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ.
Scope builder
Π Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ CoroutineScope, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΠ°Π·Π½ΡΠΌΠΈ Π±ΠΈΠ»Π΄Π΅ΡΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π±ΠΈΠ»Π΄Π΅ΡΠ° coroutineScope. ΠΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΈ Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ, ΠΏΠΎΠΊΠ° Π½Π΅ Π·Π°Π²Π΅ΡΡΠ°ΡΡΡ Π²ΡΠ΅ Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠ΅ Π΄ΠΎΡΠ΅ΡΠ½ΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π‘Π»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΡΠΎ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΡΠ΅Ρ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ «Task from coroutine scope» (Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ launch) Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΈ Π²ΡΠ΄Π°ΡΡΡΡ «Task from runBlocking», Ρ ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ coroutineScope Π΅ΡΠ΅ Π½Π΅ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΎΡΡ.
ΠΠ·Π²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΠ΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠ΅ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
ΠΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ 100 ΡΡΡΡΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠ°ΠΆΠ΄Π°Ρ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠ΅ΡΠ΅Π· 5 ΡΠ΅ΠΊΡΠ½Π΄ ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΠΎΡΠΊΡ.
Π ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠΏΡΠΎΠ±ΡΠΉΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. Π§ΡΠΎ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄ΡΡ? (Π‘ΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΡΡΠΎ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½Π΅Ρ Π²Π°ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ).
ΠΠ»ΠΎΠ±Π°Π»ΡΠ½ΡΠ΅ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° Π΄Π΅ΠΌΠΎΠ½-ΠΏΠΎΡΠΎΠΊΠΈ
ΠΠΈΠΆΠ΅ΠΏΡΠΈΠ²Π΅Π΄ΡΠ½Π½ΡΠΉ ΠΊΠΎΠ΄ Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ Π΄Π»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² GlobalScope, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π²Π° ΡΠ°Π·Π° Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ «I’m sleeping», Π° Π·Π°ΡΠ΅ΠΌ, ΠΏΠΎΡΠ»Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°Π΄Π΅ΡΠΆΠΊΠΈ, ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ main :
ΠΡΠ»ΠΈ Π²Ρ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π΄Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄, ΡΠΎ ΡΠ²ΠΈΠ΄ΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ½ ΡΡΠΈΠΆΠ΄Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ:
ΠΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΠ΅ Π² GlobalScope, Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ «ΠΆΠΈΠ·Π½Ρ» ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π ΡΡΠΎΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΡ ΠΎΠΆΠΈ Π½Π° Π΄Π΅ΠΌΠΎΠ½-ΠΏΠΎΡΠΎΠΊΠΈ.
Π‘ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
Π‘ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠ°ΡΡΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠ΅ Π² Kotlin 1.3. ΠΠ΅ΡΠ°Π»ΠΈ ΡΠΌ. Π½ΠΈΠΆΠ΅
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ API ΠΈΠ½ΠΈΡΠΈΠΈΡΡΡΡ Π΄ΠΎΠ»Π³ΠΎ ΠΏΡΠΎΡΠ΅ΠΊΠ°ΡΡΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄, ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π²Π²ΠΎΠ΄-Π²ΡΠ²ΠΎΠ΄, ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° CPU ΠΈΠ»ΠΈ GPU ΠΈ Π΄Ρ.), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π² ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠΈ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ. Π‘ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡΠ΅Π³ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΠ° ΠΏΡΡΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΡΠ²ΠΎΠΉ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ: ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ (suspend) ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π‘ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΏΡΠΎΡΠ°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, ΠΎΡΡΠ°Π²ΠΈΠ² Π²ΡΠ΅ ΠΎΡΠ»ΠΎΠΆΠ½Π΅Π½ΠΈΡ Π²Π½ΡΡΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ. ΠΠΎΠ³ΠΈΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π² ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ , Π° Π±Π°Π·ΠΎΠ²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π±ΡΠ΄Π΅Ρ Π΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Π΄Π»Ρ Π½Π°Ρ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±Π΅ΡΠ½ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°ΡΡΠΈ ΠΊΠΎΠ΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΎΠ±ΡΠ°ΡΠ½ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ (callbacks), ΠΏΠΎΠ΄ΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠ΅ΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, ΠΈ Π΄ΠΈΡΠΏΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ (ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π° ΡΠ°Π·Π½ΡΠ΅ ΠΌΠ°ΡΠΈΠ½Ρ!). ΠΠΎΠ΄ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΡΠΎΠ»Ρ ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ ΠΈΡΠΏΠΎΠ»Π½ΡΠ»ΡΡ ΡΡΡΠΎΠ³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠ½ΠΎΠ³ΠΈΠ΅ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Kotlin. ΠΡΠΎ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ async / await ΠΈΠ· C# ΠΈ ECMAScript, channels ΠΈ select ΠΈΠ· ΡΠ·ΡΠΊΠ° Go, ΠΈ generators / yield ΠΈΠ· C# ΠΈΠ»ΠΈ Python. Π‘ΠΌ. ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π½ΠΈΠΆΠ΅ ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ , ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ² ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ
ΠΠ»Π°Π²Π½ΡΠΌ ΠΎΡΠ»ΠΈΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° (Π²ΡΡΠ΅ΡΠ½Π΅Π½ΠΈΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ). ΠΠ»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ°ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π΅ΡΡΠΌΠ° Π΄ΠΎΡΠΎΠ³ΠΎΡΡΠΎΡΡΠΈΠΌ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠ°Ρ : ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΈΠ· ΠΎΠ±ΡΠ΅Π³ΠΎ ΡΠΈΡΠ»Π° ΡΠ²Π»ΡΠ΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌΠΈΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ Π²Π΅Π΄Π΅Ρ ΠΊ Π·Π°ΡΡΠ³ΠΈΠ²Π°Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ Π²Π°ΠΆΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΈΡΠΎΠ³ΠΎΠ²ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ. ΠΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° (ΠΏΠΎΡΠΎΠΊΠΎΠ²) ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠ³ΠΎ Π²ΠΎΠ²Π»Π΅ΡΠ΅Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΡΠ²Π΅ΡΡ ΡΡΠΎΠ³ΠΎ, ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π³ΠΈΠ±ΠΊΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ Π°ΡΠΏΠ΅ΠΊΡΠ°Ρ : Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π²ΡΠΎΡΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ΅ΡΠ°ΡΡ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅, ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ, ΠΆΡΡΠ½Π°Π»ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠ²Π°ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌΠΈ.
ΠΡΠ΅ ΠΎΠ΄Π½ΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Ρ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π° ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ ΡΠΎΡΠΊΠ°Ρ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ (ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ), ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠ°ΡΠΊΠΈΡΡΠ΅ΠΌΡΡ ΡΡΠ½ΠΊΡΠΈΡΡ .
ΠΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½Π½ΠΎΠΉ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ suspend :
Π’Π°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ (ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡ Π²ΡΠ·ΠΎΠ²Ρ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π±Π΅Π· ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, Π΅ΡΠ»ΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΠΆΠ΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½). Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅ ΠΎΠ±ΡΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π½ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠ· ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. Π ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅, ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΠΎΠ΄Π½Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ, ΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠ° ΠΎΠ±ΡΡΠ½ΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Π°Ρ (Π»ΡΠΌΠ±Π΄Π°-ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ). ΠΠ°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ, Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°, Π½Π° ΡΠΏΡΠΎΡΡΠ½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΡ async() (ΠΈΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ kotlinx.coroutines ):
ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ, await() ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ (ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΈΠ· Π±Π»ΠΎΠΊΠ° async <> ), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π½Π΅ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Ρ, ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ:
ΠΡΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ await() ΠΈ doSomething() Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΡΠ·Π²Π°Π½Ρ ΠΈΠ· ΠΎΠ±ΡΠΊΠ½ΠΎΠ²Π΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ main() :
ΠΠ°ΠΌΠ΅ΡΠΈΠΌ, ΡΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ, ΠΈ ΠΏΡΠΈ ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΎΡ suspend ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½:
AΠ½Π½ΠΎΡΠ°ΡΠΈΡ @RestrictsSuspension
ΠΠ½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
ΠΡ Π½Π΅ ΡΡΡΠ΅ΠΌΠΈΠΌΡΡ Π·Π΄Π΅ΡΡ Π΄Π°ΡΡ ΠΏΠΎΠ»Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ, Π½ΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΡΠΉ ΡΠΌΡΡΠ» ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ΅Π½.
Π‘ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡ ΡΠ·ΡΠΊΠΎΠ²ΠΎΠΉ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ, ΡΡΠ΅Π΄Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΠΈΠ»ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ), Π° ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π· ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ (ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ, Π½ΠΎ ΠΌΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ Π²Π΄Π°Π²Π°ΡΡΡΡ Π² ΡΡΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ Π·Π΄Π΅ΡΡ) ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅ΡΡΡ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ, Π³Π΄Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π²ΡΠ·ΠΎΠ²Π°ΠΌ. ΠΡΡΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π·Π°Π³ΡΡΠΆΠ°Π΅ΡΡΡ Π² ΠΏΠΎΠ»Π΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ ΠΊΠ»Π°ΡΡΠ° Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΡΠΎΠΏΡΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ ΠΈ Ρ. Π΄. ΠΡΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ, ΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠΉ Π°Π²ΡΠΎΠΌΠ°Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ.
ΠΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΡΠ°Π½ΠΈΡ Π΅Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅. Π’ΠΈΠΏΠΎΠΌ ΡΠ°ΠΊΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ Continuation, Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π·Π΄Π΅ΡΡ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ Continuation-passing style. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»ΠΈΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠΈΠΏΠ° Continuation (ΡΠΎΡ ΡΠ°Π½ΡΠ½Π½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅) ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ.
ΠΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΠΎ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ·Π½Π°ΡΡ Π² ΡΡΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ½ΠΎΠΌ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ΅. ΠΠΎΡ ΠΎΠΆΠΈΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ async / await Π² Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠ°Ρ (ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ C# ΠΈΠ»ΠΈ ECMAScript 2016) Π°ΠΊΡΡΠ°Π»ΡΠ½Ρ ΠΈ Π·Π΄Π΅ΡΡ, Ρ ΠΎΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΈΡ ΡΠ·ΡΠΊΠΎΠ²ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠΎΠ³ΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ ΠΎΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Kotlin.
ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΡΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΡΠΌΠ΅Π½ΠΈΠ»ΡΡ Π½Π° ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ
ΠΠ°ΠΆΠ½ΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°Π½ΠΈΠ΅: ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π»ΠΈ Π°Π²ΡΠΎΡΠ°ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π½Π°ΡΠ°Π²ΡΠΈΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΊΡΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠΎΠΉ ΠΆΠ΅ ΠΊΠΎΠ½Π²Π΅Π½ΡΠΈΠΈ: Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊ Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΡΡΡΠΈΠΊΡ Β«ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠΉΒ» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, com.example.experimental ), ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΠΉ API. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Π°ΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΎΡ ΡΠ°Π½ΠΈΡ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ. Π‘Π΅ΠΉΡΠ°Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΡΡΠ΅Π» ΡΠΈΠ½Π°Π»ΡΠ½ΡΠΉ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ:
ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° Π² Kotlin 1.4
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ API
Π‘ΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΡΡΡΡ ΠΈΡ Π³Π»Π°Π²Π½ΡΡ ΠΈΠ½Π³ΡΠ΅Π΄ΠΈΠ΅Π½ΡΠ°Ρ :
ΠΠΈΠ·ΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ API: kotlin.coroutines
ΠΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ API ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ°Π» ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π’ΠΠΠ¬ΠΠ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π΄Π²Π° Π³Π»Π°Π²Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠ°:
ΠΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΈΡ API ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π° Π·Π΄Π΅ΡΡ.
API Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΎΠ² Π² kotlin.coroutines
ΠΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Β«ΡΡΠΎΠ²Π½Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΒ» Π² kotlin.coroutines :
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ Π»Π΅Π½ΠΈΠ²ΠΎΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°Π΅ΠΌ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΈΠ·Π½ΡΡΡΠΈ Π²ΡΠ·ΠΎΠ²Π° sequence():
Π§ΡΠΎΠ±Ρ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠΎΠ΄ΠΈΡΡ Π²ΡΡ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ (ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ) Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, Π΄ΠΎΡΡΡΠΏΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ yieldAll() :
Π€ΡΠ½ΠΊΡΠΈΡ iterator() Π²ΠΎ Π²ΡΡΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½Π° sequence(), Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π»Π΅Π½ΠΈΠ²ΡΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΎΡ.
ΠΡΡΠ³ΠΈΠ΅ API Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ: kotlinx.coroutines
Π’ΠΎΠ»ΡΠΊΠΎ Π±Π°Π·ΠΎΠ²ΡΠ΅ API, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, Π΄ΠΎΡΡΡΠΏΠ½Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Kotlin. ΠΠ½ΠΈ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΌΠΈ API, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅Π»Π°ΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΎΡΡΡΠΌΠΈ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Ρ Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π½Π° ΡΠΎΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°Ρ .