Ċ Ċ package Ġcom . ut rad ia . catalog ue app v 2 . alarm Rec ie ver Ċ Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . os . Messenger Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroidx . core . content . Context Compat . getColor Ċ import Ġcom . ut rad ia . catalog ue app v 2 . R Ċ import Ġcom . ut rad ia . catalog ue app v 2 . test . Test Activity Ċ import Ġjava . lang . ref . Weak Reference Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Handler ] Ġallows Ġyou Ġto Ġsend Ġmessages Ġassociated Ġwith Ġa Ġthread . ĠA Ġ[ Messenger ] Ċ Ġ* Ġuses Ġthis Ġhandler Ġto Ġcommunicate Ġfrom Ġ[ My JobService ]. ĠIt 's Ġalso Ġused Ġto Ġmake Ċ Ġ* Ġthe Ġstart Ġand Ġstop Ġviews Ġblink Ġfor Ġa Ġshort Ġperiod Ġof Ġtime . Ċ Ġ*/ Ċ internal Ġclass ĠIncoming MessageHandler ( activity : ĠTest Activity ) Ġ: ĠHandler () Ġ{ ĊĊĠĠĠ Ġ// ĠPrevent Ġpossible Ġle aks Ġwith Ġa Ġweak Ġreference . ĊĠĠĠ Ġprivate Ġval Ġmain Activity : ĠWeak Reference < Test Activity > Ġ= ĠWeak Reference ( activity ) ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain Activity Ġ= Ġmain Activity . get () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( msg . what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠRe ceiv es Ġcallback Ġfrom Ġthe Ġservice Ġwhen Ġa Ġjob Ġhas Ġl anded ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġon Ġthe Ġapp . ĠTurn s Ġon Ġindicator Ġand Ġsends Ġa Ġmessage Ġto Ġturn Ġit Ġoff Ġafter ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġa Ġsecond . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMSG _ COLOR _ START Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStart Ġreceived , Ġturn Ġon Ġthe Ġindicator Ġand Ġshow Ġtext . ĊĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" as as "," as as assa ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Params TextView ( msg . obj , Ġ" started ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsendMessage Delayed ( Message . obtain ( this , ĠMSG _ UN COLOR _ START ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTimeUnit . SECONDS . to Millis ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠRe ceiv es Ġcallback Ġfrom Ġthe Ġservice Ġwhen Ġa Ġjob Ġthat Ġpreviously Ġl anded Ġon Ġthe ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġapp Ġmust Ġstop Ġexecuting . ĠTurn s Ġon Ġindicator Ġand Ġsends Ġa Ġmessage Ġto Ġturn Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġoff Ġafter Ġtwo Ġseconds . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMSG _ COLOR _ STOP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠStop Ġreceived , Ġturn Ġon Ġthe Ġindicator Ġand Ġshow Ġtext . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Params TextView ( msg . obj , Ġ" stopped ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsendMessage Delayed ( obtain Message ( MSG _ UN COLOR _ STOP ), ĠTimeUnit . SECONDS . to Millis ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMSG _ UN COLOR _ START Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun color Button And Clear Text ( Ġmain Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMSG _ UN COLOR _ STOP Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġun color Button And Clear Text ( main Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġun color Button And Clear Text ( activity : ĠTest Activity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġupdate Params TextView () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Params TextView ( jobId : ĠAny ? Ġ= Ġnull , Ġaction : ĠString Ġ= Ġ"") Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain Activity Ġ= Ġmain Activity . get () Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġif Ġ( jobId Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ } Ċ