package Ġcom . z ti any . kotlin . coroutines Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . LinearLayout Ċ import Ġandroid . widget . TextView Ċ import Ġkotlinx . coroutines .* Ċ import Ġorg . jetbrains . ank o .* Ċ import Ġorg . jetbrains . ank o . support . v 4 . UI Ċ import Ġjava . util .* Ċ import Ġkotlin . coroutines . Coroutine Context ĊĊ Ċ /** Ċ Ġ* https :// github . com / d my tro d any ly k / coroutine - recipes Ċ Ġ* Ċ Ġ*@ author ĠZ ti any Ċ Ġ* ĠĠĠĠĠ ĠEmail : Ġz ti any 3 @ gmail . com Ċ Ġ* ĠĠĠĠĠ ĠDate Ġ: Ġ 2 0 1 8 - 0 5 - 0 4 Ġ 1 7 : 4 1 Ċ Ġ*/ Ċ class ĠLaunch Cor outines Fragment Ġ: ĠFragment (), ĠAn ko Logger Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Text : ĠTextView ĊĊĠĠĠ Ġprivate Ġval Ġdata Provider Ġ= ĠData Provider () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġreturn ĠUI Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvertical Layout Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorientation Ġ= ĠLinearLayout . VERTICAL ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠtextView Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Text Ġ= Ġthis @ textView ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbutton Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" å¼Ģå§ĭ " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset OnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. l params Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop Margin Ġ= Ġcontext . dip ( 2 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}. view ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġload Data () Ġ= ĠGlobal Scope . launch ( Dispatch ers . Main ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdebug (" loading ") ĊĠĠĠĠĠĠĠ Ġm Text . text Ġ= Ġ" loading " ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġdata Provider . load Data () Ġ// Ġnon Ġui Ġthread , Ġsuspend Ġuntil Ġfinished ĊĠĠĠĠĠĠĠ Ġshow Text ( result ) Ġ// Ġui Ġthread ĊĠĠĠĠĠĠĠ Ġdebug (" end ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Text ( result : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Text . text Ġ= Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠData Provider ( private Ġval Ġcontext : ĠCor outine Context Ġ= ĠDispatch ers . Default ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalls Ġthe Ġspecified Ġsus pending Ġblock Ġwith Ġa Ġgiven Ġcoroutine Ġcontext , Ġsus p ends Ġuntil Ġit Ġcompletes , Ġand Ġreturns Ġthe Ġresult . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġload Data (): ĠString Ġ= Ġwith Context ( context ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( 2 0 0 0 ) Ġ// Ġim it ate Ġlong Ġrunning Ġoperation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Data Ġis Ġavailable : Ġ${ Random (). nextInt () }" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ }