package Ġw ang . lifecycle . internal Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Handler Thread Ċ import Ġw ang . lifecycle . EventDispatcher Ċ import Ġjava . util . concurrent . Executors Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ Ċ internal Ġclass ĠInternal Dispatcher Ġinternal Ġconstructor ( name : ĠString ) Ġ: ĠEvent Dispatcher Ġ{ ĊĠĠĠ Ġinternal Ġval Ġthread Ġ= ĠHandler Thread ( name ) ĊĠĠĠ Ġprivate Ġval Ġhandler : ĠHandler Ġby Ġlazy Ġ{ ĠHandler ( thread . lo oper ) Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthread . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch ( run nable : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( run nable Ġis ĠInternal Runnable ) Ġ{ Ġ" Not Ġcall Ġdispatch !" Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( Thread . currentThread () Ġ!== Ġthread ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post ( run nable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrunnable . run () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġdispatch ( block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdispatch ( object Ġ: ĠInternal Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠInternal Main Dispatcher Ġinternal Ġconstructor () Ġ: ĠEvent Dispatcher Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdispatch ( run nable : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( run nable Ġis ĠInternal Runnable ) Ġ{ Ġ" Not Ġcall Ġdispatch !" Ġ} ĊĠĠĠĠĠĠĠ ĠInternal Main Executor . execute ( run nable ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠInternal Async Dispatcher Ġinternal Ġconstructor () Ġ: ĠEvent Dispatcher Ġ{ ĊĠĠĠ Ġprivate Ġval Ġgroup : ĠThread Group ĊĠĠĠ Ġprivate Ġval Ġname Prefix : ĠString ĊĠĠĠ Ġprivate Ġval Ġthread Number Ġ= ĠAtomicInteger ( 1 ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvar 1 Ġ= ĠSystem . get Security Manager () ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" NULL ABILITY _ MIS MATCH _ BASE D _ ON _ JAVA _ AN NOT ATIONS ") ĊĠĠĠĠĠĠĠ Ġthis . group Ġ= Ġif Ġ( var 1 Ġ!= Ġnull ) Ġvar 1 . thread Group Ġelse ĠThread . currentThread (). thread Group ĊĠĠĠĠĠĠĠ Ġthis . name Prefix Ġ= Ġ" pool - async - event - dispatcher - thread -" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġexecutor Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠExec utors . new Cached ThreadPool { ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread ( group , Ġit , Ġname Prefix Ġ+ Ġthread Number . get And Increment (), Ġ 0 L ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Daemon ) Ġis Daemon Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( priority Ġ!= Ġ 5 ) Ġpriority Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispatch ( run nable : ĠRunnable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcheck ( run nable Ġis ĠInternal Runnable ) Ġ{ Ġ" Not Ġcall Ġdispatch !" Ġ} ĊĠĠĠĠĠĠĠ Ġexecutor . execute ( run nable ) ĊĠĠĠ Ġ} Ċ }