RxSwift thiab coroutines hauv Kotlin - kev xaiv hauv kev txhim kho mobile los ntawm AGIMA thiab GeekBrains

RxSwift thiab coroutines hauv Kotlin - kev xaiv hauv kev txhim kho mobile los ntawm AGIMA thiab GeekBrains

Kev paub yog qhov zoo, tsuas yog zoo. Tab sis kev xyaum kuj tseem xav tau kom koj tuaj yeem siv cov ntaub ntawv tau txais, hloov lawv los ntawm "passive cia" xwm txheej mus rau "kev siv nquag". Txawm hais tias kev cob qhia theoretical zoo npaum li cas, kev ua haujlwm "hauv teb" tseem yuav tsum tau ua. Cov saum toj no siv rau yuav luag txhua qhov kev kawm, suav nrog, tau kawg, kev txhim kho software.

Xyoo no, GeekBrains, uas yog ib feem ntawm cov kws tshaj lij kev txhim kho txawb ntawm lub tsev kawm ntawv online GeekUniversity, tau pib ua haujlwm nrog lub koom haum sib tham sib AGIMA, uas nws pab neeg yog cov neeg tsim khoom tshaj lij (lawv tsim cov phiaj xwm loj, cov tuam txhab portals thiab cov ntawv thov mobile, uas yog tag nrho). AGIMA thiab GeekBrains tau tsim ib qho kev xaiv rau kev dhia dej tob rau hauv cov teeb meem ntawm kev tsim kho daim ntawv thov mobile.

Lwm hnub peb tau tham nrog Igor Vedeneev, tus kws tshaj lij iOS, thiab Alexander Tizik, tshwj xeeb hauv Android. Ua tsaug rau lawv, qhov kev xaiv ntawm kev txhim kho mobile tau txhawb nqa nrog cov tswv yim chav kawm tshwj xeeb ntawm RxSwift lub moj khaum ΠΈ coroutines hauv Kotlin. Hauv kab lus no, cov neeg tsim khoom tham txog qhov tseem ceeb ntawm txhua qhov chaw rau cov programmers.

Reactive programming hauv iOS siv RxSwift ua piv txwv

RxSwift thiab coroutines hauv Kotlin - kev xaiv hauv kev txhim kho mobile los ntawm AGIMA thiab GeekBrains
Tus kws qhia ntawv xaiv Igor Vedeneev: "Nrog RxSwift, koj daim ntawv thov yuav ya"

Cov menyuam kawm ntawv tau txais cov ntaub ntawv dab tsi thaum lub sijhawm xaiv?

Peb tham tsis tau tsuas yog hais txog lub peev xwm ntawm lub moj khaum, tab sis kuj qhia yuav ua li cas siv nws nyob rau hauv classic MVVM + RxSwift ua ke. Ob peb lub tswv yim kuj tau tham txog. Txhawm rau sib sau ua ke cov ntaub ntawv tau txais, peb sau ib daim ntawv thov uas yog ze li sai tau rau thaj chaw ua haujlwm. Qhov no yuav yog ib daim ntawv thov nrhiav suab paj nruag siv iTunes Nrhiav API. Nyob ntawd peb yuav siv tag nrho Cov Kev Cai Zoo Tshaj Plaws, ntxiv rau xav txog qhov kev xaiv yooj yim rau kev siv RxSwift hauv MVC paradigm.

RxSwift - yog vim li cas ib tug iOS programmer xav tau lub moj khaum no, yuav ua li cas nws ua rau lub neej yooj yim dua rau tus tsim tawm?

RxSwift streamlines ua haujlwm nrog cov xwm txheej ntws thiab kev sib txuas ntawm cov khoom. Cov piv txwv yooj yim tshaj plaws thiab pom tseeb tshaj plaws yog kev khi: piv txwv li, koj tuaj yeem hloov kho qhov cuam tshuam los ntawm kev teeb tsa cov txiaj ntsig tshiab hauv qhov sib txawv hauv viewModel. Yog li, lub interface ua cov ntaub ntawv-tsav. Tsis tas li ntawd, RxSwift tso cai rau koj los piav qhia txog cov kab ke hauv cov lus tshaj tawm, uas tso cai rau koj los teeb tsa koj cov cai thiab ua kom nyeem tau. Tag nrho cov no yuav pab txhim kho kev siv tau zoo dua.

Rau tus tsim tawm, kev paub txog lub moj khaum kuj yog ib qho zoo ntxiv rau ntawm qhov kev xav tau, txij li kev nkag siab ntawm kev ua haujlwm reactive, thiab tshwj xeeb tshaj yog kev paub nrog RxSwift, muaj nuj nqis hauv kev ua lag luam.

Vim li cas thiaj xaiv lub hauv paus tshwj xeeb no tshaj lwm tus?

RxSwift muaj cov zej zog loj tshaj plaws. Qhov ntawd yog, muaj lub caij nyoog ntau dua uas qhov teeb meem uas tus tsim tawm tab tom ntsib tau raug daws los ntawm ib tus neeg. Kuj tseem muaj coob tus bindings tawm ntawm lub thawv. Ntxiv mus, RxSwift yog ib feem ntawm ReactiveX. Qhov no txhais tau hais tias muaj ib qho analogue rau Android, piv txwv li (RxJava, RxKotlin), thiab cov npoj yaig hauv lub rooj cob qhia tuaj yeem hais lus tib yam nrog ib leeg, txawm tias qee qhov ua haujlwm nrog iOS, lwm tus nrog Android.

Lub moj khaum tau hloov kho tas li, cov kab me me tau raug kho, kev txhawb nqa rau cov yam ntxwv ntawm Swift versions tshiab tau ntxiv, thiab kev khi tshiab ntxiv. Txij li RxSwift yog qhov qhib, koj tuaj yeem ua raws txhua qhov kev hloov pauv. Ntxiv mus, nws muaj peev xwm ntxiv lawv koj tus kheej.

Qhov twg yuav tsum tau siv RxSwift?

  1. Kev khi. Raws li txoj cai, peb tab tom tham txog UI, lub peev xwm los hloov UI, zoo li cuam tshuam rau cov ntaub ntawv hloov pauv, thiab tsis qhia meej meej rau lub interface tias nws yog lub sijhawm hloov tshiab.
  2. Kev sib raug zoo ntawm cov khoom siv thiab kev ua haujlwm. Tsuas yog piv txwv xwb. Peb yuav tsum tau txais ib daim ntawv teev cov ntaub ntawv los ntawm lub network. Qhov tseeb, qhov no tsis yog kev ua haujlwm yooj yim. Txhawm rau ua qhov no, koj yuav tsum xa daim ntawv thov, daim ntawv qhia cov lus teb rau hauv cov khoom ntawm cov khoom, khaws cia rau hauv cov ntaub ntawv thiab xa mus rau UI. Raws li txoj cai, cov khoom sib txawv yog lub luag haujlwm rau kev ua cov haujlwm no (peb nyiam thiab ua raws li cov hauv paus ntsiab lus KHOOM NO?). Muaj ib lub cuab yeej zoo li RxSwift ntawm tes, nws tuaj yeem piav qhia qhov system yuav ua li cas, thiab nws yuav ua li cas nws yuav nyob hauv lwm qhov chaw. Nws yog vim qhov no tias lub koom haum zoo dua ntawm cov cai tau ua tiav thiab kev nyeem tau nce ntxiv. Hais txog kev hais lus, tus lej tuaj yeem muab faib ua cov ntsiab lus thiab phau ntawv nws tus kheej.

Cov xwm txheej hauv Kotlin

RxSwift thiab coroutines hauv Kotlin - kev xaiv hauv kev txhim kho mobile los ntawm AGIMA thiab GeekBrains
Tus kws qhia ntawv xaiv xaiv Alexander Tizik: "Kev txhim kho niaj hnub xav tau cov cuab yeej siv niaj hnub"

Yuav qhia dab tsi ntawm GeekBrains cov kws qhia ntawv uas yog ib feem ntawm lub quartered branded?

Txoj kev xav, kev sib piv nrog rau lwm txoj hauv kev, cov qauv ua piv txwv hauv cov ntshiab Kotlin thiab hauv cov qauv hauv daim ntawv thov. Raws li kev xyaum, cov tub ntxhais kawm yuav raug pom ib daim ntawv thov uas txhua yam raug khi rau coroutines. Qhov tseeb yog tias feem ntau cov ntawv thov yog ua tiav asynchronous thiab cov lej sib npaug. Tab sis Kotlin coroutines tso cai tsis meej pem, heterogeneous los yog overly complex thiab kev ua tau zoo-thov code kom raug txo mus rau ib qho yooj yim-rau-to taub style, tau txais txiaj ntsig hauv kev ua kom raug thiab kev ua tau zoo.

Peb yuav kawm sau idiomatic code nyob rau hauv coroutines uas daws cov teeb meem tswv yim thiab yog to taub thaum xub thawj siab ib muag txawm tsis paub tob txog yuav ua li cas coroutines ua hauj lwm (uas tsis tau hais txog cov tsev qiv ntawv zoo li RxJava). Peb tseem yuav nkag siab tias yuav siv cov tswv yim nyuaj npaum li cas, xws li tus qauv ua yeeb yam, los daws cov teeb meem nyuaj, xws li cov ntaub ntawv warehouse hauv MVI lub tswv yim.

Los ntawm txoj kev, xov xwm zoo dua. Thaum lub sijhawm xaiv tau raug kaw, qhov hloov tshiab rau lub tsev qiv ntawv Kotlin Coroutines raug tso tawm, uas cov chav kawm tau tshwm sim Flow - analogue ntawm hom Flowable ΠΈ Observable los ntawm RxJava. Qhov hloov tshiab tseem ceeb ua rau coroutines feature ua tiav los ntawm daim ntawv thov tsim tawm qhov pom. Muaj tseeb, tseem muaj chaw rau kev txhim kho: txawm tias qhov tseeb tias ua tsaug rau kev txhawb nqa ntawm coroutines hauv kotlin / haiv neeg, nws twb muaj peev xwm sau ntau lub platform hauv Kotlin thiab tsis raug kev txom nyem los ntawm qhov tsis muaj RxJava lossis analogues hauv Kotlin ntshiab, kev txhawb nqa rau coroutines hauv kotlin / haiv neeg tseem tsis tau tiav. Piv txwv li, tsis muaj lub tswv yim ntawm cov neeg ua yeeb yam. Feem ntau, pab pawg Kotlin muaj cov phiaj xwm los txhawb cov neeg ua yeeb yam nyuaj ntawm txhua lub platform.

Kotlin Coroutines - lawv pab tau tus tsim tawm Kotlin li cas?

Coroutines muab lub sijhawm zoo los sau cov lej uas nyeem tau, tswj tau, thiab ruaj ntseg, asynchronous, thiab concurrency. Koj tuaj yeem tsim cov adapters rau lwm cov asynchronous moj khaum thiab cov txheej txheem uas twb tau siv hauv codebase.

Coroutines txawv ntawm cov xov li cas?

Pab pawg Kotlin hu xov tooj coroutines sib sib zog nqus xov. Ntxiv rau, coroutine tuaj yeem xa rov qab qee tus nqi, vim tias, ntawm nws qhov tseem ceeb, coroutine yog kev suav suav. Nws tsis ncaj qha nyob ntawm qhov system threads; threads tsuas yog ua coroutines.

Cov teeb meem dab tsi tuaj yeem daws tau los ntawm kev siv Coroutine, uas tsis tuaj yeem lossis nyuaj los daws kev siv "ntshiab" Kotlin?

Txhua yam asynchronous, sib npaug, "kev sib tw" cov haujlwm tau daws tau zoo siv coroutines - yog nws ua cov neeg siv clicks, mus online, lossis sau npe yuav hloov tshiab los ntawm cov ntaub ntawv.

Hauv Kotlin ntshiab, cov teeb meem no tau daws tib yam li hauv Java - nrog kev pab los ntawm ntau txhiab tus qauv, txhua tus muaj nws tus kheej qhov zoo thiab qhov tsis zoo, tab sis tsis muaj leej twg muaj kev txhawb nqa qib lus.

Raws li qhov xaus, nws tsim nyog hais tias ob qho tib si xaiv (thiab cov chav kawm tseem ceeb ib yam nkaus) tau hloov kho raws li kev hloov pauv ntawm cov xwm txheej sab nraud. Yog tias cov kev hloov tshiab tseem ceeb tshwm sim hauv cov lus lossis cov txheej txheem, cov kws qhia ntawv coj qhov no mus rau hauv tus account thiab hloov kho qhov program. Tag nrho cov no tso cai rau koj khaws koj tus ntiv tes ntawm lub plawv ntawm txoj kev loj hlob, yog li hais lus.

Tau qhov twg los: www.hab.com

Ntxiv ib saib