Kotlin Fest 2018 わいわい報告会 - connpass : https://connpass.com/event/100752/ 各セッションの紹介と、Kotlin コルーチンを 理解しよう - Speaker Deck : https://speakerdeck.com/sys1yagi/kotlin-korutinwo-li-jie-siyou のお話をきいて試してみた内容の紹介をしました。
,PUMJO'FTUְְ㜠デ⠓!NPDIJDP,PUMJO'FTUְְ㜠デ⠓
View Slide
"CPVUNFNPDIJDP!@NPDIJDPO@"OESPJE+BWB,PUMJO5FDICPPTUFS䪮遭剅Ⱙ
,PUMJO'FTUֶ气圫ד׃
,PUMJO'FTU˖ ㅷ䊛ד⪵˖ 傈劤ⴱך,PUMJOؕٝؿ؋ٖٝأ˖ ♧菙⸇罏せ 1FBUJY״˖ إحءّٝ-5
IUUQTQIPUPTHPPHMFDPNTIBSF"'2JQ.VY*9**#QG3S@)X8U2VQ*$:+M7$4Z[%NE7C&N(BKZB%Q4"@@K9LTS"HLFZ/E%;I8E)/'75'PE)MQ/#JB$MB9QR29+L/;
TUBSUGSPN$POWFSUUP,PUMJO
$POWFSU+BWB'JMFUP,PUMJO'JMF
㹋ꥷחכוז؝٦سחזגְךַ
%FDPNQJMF
,PUMJO'FTUֶׅׅإحءّٝ
չ,PUMJOד何㊣ׅ"OESPJE،فٔךㅷ颵պְׂ֮ײֹׁIUUQTTQFBLFSEFDLDPNZBO[NLPUMJOGFTUؔـآؙؑز䭷ぢⰅ٥&FDUJWF+BWBזוד䱿גְ㛙暕ד〳铣䚍ծⱄⵃ欽䚍ך넝ְ؝٦سָ,PUMJOדוך״ֲח鎉铂➬圫ח《Ⰵծ,PUMJOד剅ֻֿהד䖞ֲֿהָדַֹהְֲֶ鑧
չ,PUMJOֲ♧娄պ啾峔⛒ׁIUUQTTQFBLFSEFDLDPNLPCJUPLBCBLPUMJONPVCV,PUMJOך㘗חֲ♧娄驎鴥ֶ鑧կؙٓأה㘗ך麩ְծ؟ـة؎فהכծ/VMM鏩㺁䚍ծ♶㢌٥Ⱏ㢌٥㢌
չ,PUMJO،فٔךٔؿ؋ؙةؚٔٝه؎ٝزպ⚥ꅽ湫➂ׁIUUQTXXXTMJEFTIBSFOFU3FDSVJU-JGFTUZMFSFGBDUPSJOHQPJOUPGLPUMJOBQQMJDBUJPO,PUMJO⢪גٔؿ؋ؙةؚׅٔٝկ
չ)PXUP5FTU4FSWFSTJEF,PUMJOպꈿ加⨳㣕ׁ٥⾱猕䗗ׁIUUQTTQFBLFSEFDLDPNNBFIBSJOIPXUPUFTUTFSWFSTJEFLPUMJOOVNCFSLPUMJOGFTU4FSWFS4JEFד6OJUذأزךٓ؎ـٓٔכׄTQSJOHؿٖ٦يٙ٦ؙח屟剅ֹ倯ծ%#ذأزך⸬桦⻉זוկ⼱ךٓ؎ـٓٔ稱➜כ"OESPJEד剣欽կ
չ,PUMJO؝ٕ٦ثٝ椚鍑׃״ֲպⰒ加⤥䎢ׁIUUQTTQFBLFSEFDLDPNTZTZBHJLPUMJOLPSVUJOXPMJKJFTJZPV+BWBדכأذ٦زوءٝה׃ג㹋遤ֿׁהתד鍑铡׃,PUMJO؝ٕ٦ثٝך寸㹀晛
չ,PUMJOMJOUFSպꆏ㹧䡞⛒➜ׁIUUQTTQFBLFSEFDLDPNLHNZTIJOLPUMJOMJOUFSLUMJOU EFUFLU BOESPJEMJOUך暴䗙ծ鏣㹀ծؕأةيٕ٦ٕך㼪Ⰵחאְג鍑铡
չ)PXUP,POUSJCVUF W+1պ熖頺⢕ⰩׁIUUQTQIPUPTHPPHMFDPNTIBSF"'2JQ/B:@+-(28#'HT.MG(GN26U[R'4MNI%GE'8(NTB$4F)P*PDOHLFZC63%E9#:56E%EM7%/8:U5%I#3['KCO2-7M;3KM3,PUMJOךךחفؙٕٔ鷏$POUSJCVUFׅ,POUSJCVUFך➬倯鑫׃ֻ铡僇կֿך酅ך-5㣐⠓דזה➂ך涫㠡罏ָTIJSBKJׁח侄זו鎉⿹׃גְկ
չ,PUMJOד䠥ד.JDSPTFSWJDFTպTUPSNDBUׁIUUQTTQFBLFSEFDLDPNTUPSNDBULPUMJOGFTU㹋騧涸זغحؙؒٝس,PUMJO鍑铡
וךإحءֶّٝ׃ְךדגגְֻׁ
©2018 Lang-8 Inc. ALL Rights Reserved.,PUMJO'FTU5PTIJIJSP:BHJ,PUMJOίϧʔνϯΛཧղ͠Α͏IUUQTTQFBLFSEFDLDPNTZTZBHJLPUMJOLPSVUJOXPMJKJFTJZPV
$PSPVUJOFהכ˖ Ⳣ椚ך鷿⚥ד♧儗⨡姺ָ〳腉˖ ⴽךأٖحسדⱄָ〳腉˖ ⚥倖٥ⱄך֮؝٦سꬊず劍Ⳣ椚זוءٝفٕח剅ֽ˖ 3Y+BWBהכ㹋植׃ְֿהָ殯ז
IUUQTTQFBLFSEFDLDPNTZTZBHJLPUMJOLPSVUJOXPMJKJFTJZPV©2018 Lang-8 Inc. ALL Rights Reserved.ܧଓঢ়گΛ༰қʹॻ͘ίϧʔνϯ BTZODBXBJUfun loadProfile(id: Int) {getProfile(token) { profile ->showProgile(profile)}}ίʔϧόοΫελΠϧfun loadProfile(id: Int) {val profile = getProfile(id).await()showProfile(profile)} ˞ٖࣅίʔυͰ͢
$PSPVUJOFדֲֹז孡ָ׃גֹ
וַֿ㨣לְְֲ
IUUQTTQFBLFSEFDLDPNTZTZBHJLPUMJOLPSVUJOXPMJKJFTJZPV©2018 Lang-8 Inc. ALL Rights Reserved.PO"DUJWJUZ3FTVMUΛTVTQFOElaunch(UI) {val result = activityResult(intent)if (result.isOk) {// okval data: Intent? = result.flatMap()} else {// ng}}IUUQTHJUIVCDPNQEWSJF[FBOESPJEDPSPVUJOFTBOESPJEDPSPVUJOFTͱ͍͏αʔυύʔςΟϥΠϒϥϦ͕ఏڙɻSFRVFTU1FSNJTTJPO͋ΔΑ
USZBOESPJEDPSPVUJOFT
橆㞮圓眠kotlin_version = ‘1.2.61’kotlin { experimental { coroutines 'enable' } }implementation'org.jetbrains.kotlinx:kotlinx-coroutines-core:0.25.3'
橆㞮圓眠kotlin_version = ‘1.2.61’kotlin { experimental { coroutines 'enable' } }implementation‘org.jetbrains.kotlinx:kotlinx-coroutines-core:0.25.3'implementation'net.devrieze:android-coroutines:0.7.0'
BOESPJEDPSPVUJOFTIUUQTHJUIVCDPNQEWSJF[FBOESPJEDPSPVUJOFT
PO"DUJWJUZ3FTVMUstartActivityForResult(requestIntent,REQUEST_CODE)override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {super.onActivityResult(requestCode, resultCode, data)when (requestCode) {REQUEST_CODE -> {if (resultCode == Activity.RESULT_OK) {data ?: returnsetResult(RESULT_OK, data)finish()}}}}
PO"DUJWJUZ3FTVMUlaunch(UI) {val result = activityResult(requestIntent)if (result.isOk) {// okval data: Intent? = result.flatMap()setResult(RESULT_OK, data)finish()} else {// ng}}
USZBOESPJEDPSPVUJOFT׃ג䠬䟝˖ ׅ׀ֻءٝفٕ˖ ؙٔؒأزהٖأهٝأָずׄ㜥䨽חתהתךד铣װְׅ˖ 3Y+BWBך縧ֹ䳔ִ״䕦갟眔㔲ָ㼰זְ˖ 㸣Ⰻח傊䒭ה⢘欽〳腉
3Y+BWB⢪גְ傀㶷،فٔח,PUMJO$PSPVUJOFT㼪Ⰵ׃״ֲIUUQTRJJUBDPNUBLBIJSPNJUFNTBDBCDEEF
USZBOESPJEDPSPVUJOFT׃ג䠬䟝˖ DPSPVUJOF荈⡤ָת♧䘔FYQFSJNFOUBM˖ BOESPJEDPSPVUJOFFYQFSJNFOUBM˖ فٗتؙزפך㼪Ⰵכ荈䊹顑⟣ד
&OKPZ,PUMJO
SFG˖ (FUUJOHTUBSUFEXJUI"OESPJEBOE,PUMJO,PUMJO1SPHSBNNJOH-BOHVBHFIUUQTLPUMJOMBOHPSHEPDTUVUPSJBMTLPUMJOBOESPJEIUNM˖ (FU4UBSUFEXJUI,PUMJOPO"OESPJE]"OESPJE%FWFMPQFSTIUUQTEFWFMPQFSBOESPJEDPNLPUMJOHFUTUBSUFE˖ <,PUMJO؎ٝ٥،ؙءّٝ]و؎شؽـحؙأ> IUUQTCPPLNZOBWJKQFDQSPEVDUTEFUBJMJE