package Ġtop . ease link . framework . thread pool Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġkotlinx . coroutines . android . as Coroutine Dispatcher Ċ import Ġjava . lang . reflect . Constructor Ċ Ċ val ĠMain Ġ= ĠL ooper . get Main Looper (). as Handler ( true ). as Coroutine Dispatcher (" EL - main ") Ċ val ĠIm mediate Pool Ġby Ġlazy Ġ{ ĠEL Dispatcher ( EL ThreadPool Provider . IM MEDI ATE _ EXECUT ORS ) Ġ} Ċ val ĠCalc Pool Ġby Ġlazy Ġ{ ĠEL Dispatcher ( EL ThreadPool Provider . CAL C UL ATE _ EXECUT OR ) Ġ} Ċ val ĠBack Ground Pool Ġby Ġlazy Ġ{ ĠEL Dispatcher ( EL ThreadPool Provider . BACKGROUND _ EXECUT OR ) Ġ} Ċ val ĠI OP ool Ġby Ġlazy Ġ{ ĠEL Dispatcher ( EL ThreadPool Provider . IO _ EXECUT OR ) Ġ} Ċ Ċ private Ġfun ĠL ooper . as Handler ( async : ĠBoolean ): ĠHandler Ġ{ ĊĠĠĠ Ġ// ĠAsync Ġsupport Ġwas Ġadded Ġsince ĠAPI Ġ 1 6 ĊĠĠĠ Ġif Ġ(! async Ġ|| ĠBuild . VERSION . SDK _ INT Ġ< Ġ 1 6 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHandler ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= Ġ 2 8 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHandler . create Async ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġconstructor : ĠConstructor < Handler > ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġconstructor Ġ= ĠHandler :: class . java . getDeclared Constructor ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠL ooper :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHandler . Callback :: class . java , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBoolean :: class . java Primitive Type ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch Method Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠHandler ( this ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġconstructor . newInstance ( this , Ġnull , Ġtrue ) Ċ }