RxSwift ΠΈ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π² Kotlin β€” Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ² ΠΏΠΎ мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‚ AGIMA ΠΈ GeekBrains

RxSwift ΠΈ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π² Kotlin — Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ² ΠΏΠΎ мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‚ AGIMA ΠΈ GeekBrains

Знания β€” это Ρ…ΠΎΡ€ΠΎΡˆΠΎ, просто ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ. Но Π½ΡƒΠΆΠ½Π° Π΅Ρ‰Π΅ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, пСрСвСдя ΠΈΡ… ΠΈΠ· статуса «пассивноС Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Β» Π² статус Β«Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС». Каким Π±Ρ‹ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ Π½ΠΈ Π±Ρ‹Π»ΠΎ тСорСтичСскоС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅, трСбуСтся Π΅Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚Π° Β«Π² ΠΏΠΎΠ»Π΅Β». Π‘ΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ касаСтся практичСски любой сфСры обучСния, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ ΠΆΠ΅, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ПО.

Π’ этом Π³ΠΎΠ΄Ρƒ GeekBrains Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚Π° ΠΎΠ½Π»Π°ΠΉΠ½-унивСрситСта GeekUniversity ΠΏΠΎ мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌ агСнтством AGIMA, ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ β€” ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (Π΄Π΅Π»Π°ΡŽΡ‚ слоТныС высоконагруТСнныС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΡ€Ρ‚Π°Π»Ρ‹ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Π΅ прилоТСния, Π²ΠΎΡ‚ это всё). AGIMA ΠΈ GeekBrains создали Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ² для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ погруТСния Π² практичСскиС вопросы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

На днях ΠΌΡ‹ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ с Π˜Π³ΠΎΡ€Π΅ΠΌ Π’Π΅Π΄Π΅Π½Π΅Π΅Π²Ρ‹ΠΌ, спСциалистом ΠΏΠΎ iOS, ΠΈ АлСксандром Π’ΠΈΠ·ΠΈΠΊΠΎΠΌ, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌΡΡ Π½Π° Android. Благодаря ΠΈΠΌ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ² ΠΏΠΎ мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ обогатился практичСским спСцкурсом ΠΏΠΎ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΡƒ RxSwift ΠΈ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°ΠΌ Π² Kotlin. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΎ ваТности ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ направлСния для программистов.

Π Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² iOS Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ RxSwift

RxSwift ΠΈ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π² Kotlin — Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ² ΠΏΠΎ мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‚ AGIMA ΠΈ GeekBrains
ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π° Π˜Π³ΠΎΡ€ΡŒ Π’Π΅Π΄Π΅Π½Π΅Π΅Π²: Β«C RxSwift вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅Ρ‚Π°Ρ‚ΡŒΒ»

ΠšΠ°ΠΊΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ студСнты Π½Π° Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π΅?

ΠœΡ‹ рассказываСм Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡ€ΠΎ возмоТности Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°, Π½ΠΎ ΠΈ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ, ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² классичСской связкС MVVM + RxSwift. Π’Π°ΠΊΠΆΠ΅ рассматриваСтся нСсколько практичСских ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ². Для закрСплСния ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… пишСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, максимально ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΊ ΠΏΠΎΠ»Π΅Π²Ρ‹ΠΌ условиям Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ поиска ΠΌΡƒΠ·Ρ‹ΠΊΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ iTunes Search API. Π’Π°ΠΌ ΠΌΡ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ всС Best Practices, плюс рассмотрим Π±ΠΎΠ»Π΅Π΅ простой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ использования RxSwift Π² ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ΅ MVC.

RxSwift β€” Π·Π°Ρ‡Π΅ΠΌ этот Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ iOS-программисту, ΠΊΠ°ΠΊ ΠΎΠ½ ΠΎΠ±Π»Π΅Π³Ρ‡Π°Π΅Ρ‚ Тизнь Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ?

RxSwift упорядочиваСт Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ событий ΠΈ связями ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ. Π‘Π°ΠΌΡ‹ΠΉ простой ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ β€” это Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ интСрфСйс, просто установив Π½ΠΎΠ²Ρ‹Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ Π²ΠΎ viewModel. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, интСрфСйс становится data-driven. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, RxSwift позволяСт ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ систСму Π² Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΌ стилС, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. Всё это ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ эффСктивнСС Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ прилоТСния.

Для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π·Π½Π°Π½ΠΈΠ΅ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ° β€” это Π΅Ρ‰Ρ‘ ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ плюс Π² Ρ€Π΅Π·ΡŽΠΌΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ программирования, ΠΈ Π² особСнности ΠΎΠΏΡ‹Ρ‚ с RxSwift, цСнятся Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅.

ΠŸΠΎΡ‡Π΅ΠΌΡƒ стоит Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ этот Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ, Π° Π½Π΅ Π΄Ρ€ΡƒΠ³ΠΈΠ΅?

Π£ RxSwift самоС большоС сообщСство. Π’ΠΎ Π΅ΡΡ‚ΡŒ большС шансов, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ сталкиваСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, ΡƒΠΆΠ΅ ΠΊΠ΅ΠΌ-Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½Π°. Π’Π°ΠΊΠΆΠ΅ большоС количСство Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΎΠ² ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, RxSwift β€” Ρ‡Π°ΡΡ‚ΡŒ ReactiveX. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ для Android, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ (RxJava, RxKotlin), Π° ΠΊΠΎΠ»Π»Π΅Π³ΠΈ ΠΏΠΎ Ρ†Π΅Ρ…Ρƒ ΠΌΠΎΠ³ΡƒΡ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ языкС, нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ с iOS, Π΄Ρ€ΡƒΠ³ΠΈΠ΅ β€” с Android.

Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ постоянно обновляСтся, ΠΈΡΠΏΡ€Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΌΠ΅Π»ΠΊΠΈΠ΅ Π½Π΅Π΄ΠΎΡ‡Π΅Ρ‚Ρ‹, добавляСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ„ΠΈΡˆΠ΅ΠΊ ΠΈΠ· Π½ΠΎΠ²Ρ‹Ρ… вСрсий Swift, Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ Π±ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ RxSwift опСнсорсный, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° всСми измСнСниями. Π‘ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΠ³ΠΎ, Π΅ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΡ… самому.

Π“Π΄Π΅ стоит ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ RxSwift?

  1. Π‘ΠΈΠ½Π΄ΠΈΠ½Π³ΠΈ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ‚ΡƒΡ‚ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Ρ‘Ρ‚ ΠΏΡ€ΠΎ UI, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ UI, ΠΊΠ°ΠΊ Π±Ρ‹ рСагируя Π½Π° измСнСния Π΄Π°Π½Π½Ρ‹Ρ…, Π° Π½Π΅ явно говоря интСрфСйсу, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ€Π° ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒΡΡ.
  2. Бвязь ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π‘Ρ€Π°Π·Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Нам Π½Π°Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ список Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· сСти. На самом Π΄Π΅Π»Π΅, это Π½Π΅ такая простая опСрация. Для этого Π½Π°Π΄ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ запрос, ΡΠΌΠ°ΠΏΠΏΠΈΡ‚ΡŒ ΠΎΡ‚Π²Π΅Ρ‚ Π² массив ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΎΡ‚Π΄Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² UI. ΠžΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‚ Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этих ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ (ΠΌΡ‹ ΠΆΠ΅ ΠΌΡ‹ любим ΠΈ слСдуСм ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°ΠΌ SOLID?). ИмСя ΠΏΠΎΠ΄ Ρ€ΡƒΠΊΠΎΠΉ Ρ‚Π°ΠΊΠΎΠΉ инструмСнт, ΠΊΠ°ΠΊ RxSwift, появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ, ЧВО Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ систСма, Π° КАК ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ это Π΄Π΅Π»Π°Ρ‚ΡŒ β€” Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… мСстах. ИмСнно Π·Π° счёт этого достигаСтся Π»ΡƒΡ‡ΡˆΠ°Ρ организация ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. Условно говоря, ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ΠΎΠ³Π»Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ саму ΠΊΠ½ΠΈΠ³Ρƒ.

ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π² Kotlin

RxSwift ΠΈ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π² Kotlin — Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ² ΠΏΠΎ мобильной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΎΡ‚ AGIMA ΠΈ GeekBrains
ΠŸΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΡŒ Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π° АлСксандр Π’ΠΈΠ·ΠΈΠΊ: «БоврСмСнная Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ соврСмСнных тСхничСских срСдств»

Π§Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒΡΡ Π½Π° Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚Π΅ GeekBrains Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π±Ρ€Π΅Π½Π΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΠΈ?

ВСория, сравнСния с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°ΠΌΠΈ, практичСскиС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π² чистом Kotlin ΠΈ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Android-прилоТСния. Π§Ρ‚ΠΎ касаСтся ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ, Ρ‚ΠΎ студСнтам Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ всё завязано Π½Π° coroutines. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€” ΡΠΏΠ»ΠΎΡˆΠ½Ρ‹Π΅ асинхронныС ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния. А Π²ΠΎΡ‚ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Kotlin ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Π·Π°ΠΏΡƒΡ‚Π°Π½Π½Ρ‹ΠΉ, Ρ€Π°Π·Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΉ ΠΈΠ»ΠΈ чСрСсчур слоТный ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΊΠΎΠ΄ свСсти ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ, простому для понимания ΡΡ‚ΠΈΠ»ΡŽ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ² Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² коррСктности исполнСния ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠœΡ‹ научимся ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈΠ΄ΠΈΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ Π½Π° ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π°Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ практичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ понятСн с ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ взгляда Π΄Π°ΠΆΠ΅ Π±Π΅Π· Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… Π·Π½Π°Π½ΠΈΠΉ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ устроСны ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ (Ρ‡Ρ‚ΠΎ нСльзя ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ Ρ‚Π°ΠΊΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ…, ΠΊΠ°ΠΊ RxJava). Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΉΠΌΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ послоТнСС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ модСль Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ², для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ слоТных Π·Π°Π΄Π°Ρ‡, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ MVI.

ΠšΡΡ‚Π°Ρ‚ΠΈ, Π΅Ρ‰Ρ‘ Ρ…ΠΎΡ€ΠΎΡˆΠ°Ρ Π½ΠΎΠ²ΠΎΡΡ‚ΡŒ. Пока записывался Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ², Π²Ρ‹ΡˆΠ»ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Kotlin Coroutines, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ появился класс Flow β€” Π°Π½Π°Π»ΠΎΠ³ Ρ‚ΠΈΠΏΠΎΠ² Flowable ΠΈ Observable ΠΈΠ· RxJava. ОбновлСниС, ΠΏΠΎ сути, Π΄Π΅Π»Π°Π΅Ρ‚ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ feature complete с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠŸΡ€Π°Π²Π΄Π°, ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎΠΊΠ° Π΅Ρ‰Ρ‘ Π΅ΡΡ‚ΡŒ ΠΊΡƒΠ΄Π°: нСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ благодаря ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ Π² kotlin/native ΡƒΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ΅Π½Π½Ρ‹Π΅ прилоТСния Π½Π° Kotlin ΠΈ Π½Π΅ ΡΡ‚Ρ€Π°Π΄Π°Ρ‚ΡŒ ΠΎΡ‚ отсутствия RxJava ΠΈΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ² Π² чистом Kotlin, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ Π² kotlin/native Π΅Ρ‰Ρ‘ Π½Π΅ полная. НапримСр, Π½Π΅Ρ‚ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ². Π’ Ρ†Π΅Π»ΠΎΠΌ, Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Kotlin стоит Π² ΠΏΠ»Π°Π½Π°Ρ… ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π±ΠΎΠ»Π΅Π΅ слоТных Π°ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π½Π° всСх ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ….

Kotlin Coroutines β€” Ρ‡Π΅ΠΌ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Kotlin?

ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ Π΄Π°ΡŽΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π½ΡƒΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡ‹ΠΉ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΈ бСзопасный, асинхронный ΠΈ Β«ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ΠΉΒ» (concurrency) ΠΊΠΎΠ΄. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ асинхронныС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Π΅.

Π§Π΅ΠΌ Coroutines ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²?

Команда Kotlin Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹ лСгковСсными ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ. Плюс ΠΊΠΎ всСму, ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Ρ‚ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ, ΠΏΠΎ своСй сути, ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Π° β€” это приостанавливаСмоС вычислСниС. Она Π½Π΅ зависит Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ ΠΎΡ‚ систСмных ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΊΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»Π½ΡΡŽΡ‚ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½Ρ‹.

КакиС практичСскиС Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ с использованиСм ΠšΠΎΡ€ΡƒΡ‚ΠΈΠ½, ΠΊΠ°ΠΊΠΈΠ΅ нСльзя ΠΈΠ»ΠΈ слоТно Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ «чистого» Kotlin?

Π›ΡŽΠ±Ρ‹Π΅ асинхронныС, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅, Β«ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹Π΅Β» Π·Π°Π΄Π°Ρ‡ΠΈ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΡ€ΡƒΡ‚ΠΈΠ½ β€” Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π°ΠΆΠ°Ρ‚ΠΈΠΉ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, ΠΏΠΎΡ…ΠΎΠ΄ Π² ΡΠ΅Ρ‚ΡŒ ΠΈΠ»ΠΈ подписка Π½Π° обновлСния ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Π’ чистом Kotlin эти Π·Π°Π΄Π°Ρ‡ΠΈ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² Java β€” ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ тысячи Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², Ρƒ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΅ΡΡ‚ΡŒ свои ΠΏΠ»ΡŽΡΡ‹ ΠΈ минусы, Π½ΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ языка.

Π’ качСствС Π²Ρ‹Π²ΠΎΠ΄Π° стоит ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π° Ρ„Π°ΠΊΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΈΠ²Π° (Π΄Π° ΠΈ основныС курсы Ρ‚ΠΎΠΆΠ΅) ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ΡΡ Π² соотвСтствии с измСнСниями Π²Π½Π΅ΡˆΠ½ΠΈΡ… условий. Если ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½Ρ‹Π΅ обновлСния Π² языках ΠΈΠ»ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°Ρ…, ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚Π΅Π»ΠΈ это ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. Всё это позволяСт Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ€ΡƒΠΊΡƒ Π½Π° ΠΏΡƒΠ»ΡŒΡΠ΅ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Ссли Ρ‚Π°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ€Π°Π·ΠΈΡ‚ΡŒΡΡ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ