@ file : Suppress (" Red undant Visibility Modifier ") Ċ Ċ package Ġco . zs mb . rain bow cake . internal . li ved ata Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroidx . annotation . Visible ForTesting Ċ import Ġandroidx . annotation . Visible ForTesting . PACKAGE _ PRIVATE Ċ import Ġjava . util . concurrent . Executor Ċ Ċ /** Ċ Ġ* ĠA Ġwrapper Ġfor Ġthe ĠAndroid Ġmain Ġthread , Ġused Ġinternally Ġby Ġthe Ġlibrary 's Ċ Ġ* Ġcustom ĠLive Data Ġimplementations . ĠVis ible Ġfor Ġtesting Ġpurposes Ġonly . Ċ Ġ* ĠConsider Ġusing Ġthe ĠLive Data Test Rule Ġclass Ġof Ġrain bow - cake - test Ġif Ġyou Ċ Ġ* Ġneed Ġto Ġreplace Ġthe Ġmain Ġthread Ġinstead Ġof Ġdirectly Ġ. Ċ Ġ*/ Ċ @ Visible ForTesting ( otherwise Ġ= ĠPACK AGE _ PRIVATE ) Ċ object ĠMain Thread Wrapper Ġ{ ĊĠĠĠ Ġ@ Suppress (" Object PropertyName ") ĊĠĠĠ Ġprivate Ġvar Ġ_ executor : ĠExecutor ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġexecutor Ġused Ġfor Ġrunning Ġcode Ġon Ġthe Ġmain Ġthread . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġvar Ġexecutor : ĠExecutor ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ executor Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ_ executor Ġ= ĠMain Thread Executor () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ_ executor !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ executor Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReset Ġthe Ġinternal Ġexecutor Ġto Ġthe Ġreal ĠAndroid Ġmain Ġthread . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġpublic Ġfun Ġreset Executor () Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ executor Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġclass ĠMain Thread Executor Ġ: ĠExecutor Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġexecute ( command : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Ġ{ Ġcommand . run () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ