package Ġcom . dg k . k library . demo . other Ċ Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġcom . dg k . R Ċ import Ġcom . dg k . common . util . log . K Log i Ċ import Ġkotlinx . android . synt hetic . main . demo _ activity _ timer .* Ċ import Ġjava . util .* Ċ import Ġandroid . os .* Ċ import Ġcom . dg k . common . util . timer . Exact Timer ĊĊ Ċ class ĠTimer Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠHE ART _ BE AT _ HANDLER Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġprivate Ġval ĠHE ART _ BE AT _ TIMER Ġ= Ġ 1 0 0 1 ĊĠĠĠ Ġprivate Ġval ĠHE ART _ BE AT _ INTERVAL Ġ= Ġ 3 0 0 0 L ĊĊĠĠĠ Ġprivate Ġvar Ġlast Send Time Ġ= Ġ 0 L ĊĊĠĠĠ Ġprivate Ġval Ġhandler Ġ= ĠHandler ( Looper . get Main Looper ()) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( it . what ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHE ART _ BE AT _ HANDLER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Log i (" Handler Ġ å¿ĥ è·³ éĹ´ éļĶ ï¼ļ ${ currentTime Ġ- Ġlast Send Time }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Send Time Ġ= ĠcurrentTime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Heart Beat () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠHE ART _ BE AT _ TIMER Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Log i (" Timer Ġ+ ĠHandler Ġ å¿ĥ è·³ éĹ´ éļĶ ï¼ļ ${ currentTime Ġ- Ġlast Send Time }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Send Time Ġ= ĠcurrentTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠK Log i (" unknown Ġmessage . what Ġ: Ġ${ it . what }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn @ Handler Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . demo _ activity _ timer ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġbtn _ handler _ start . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Log i (" å¼ĢåĲ¯ Handler å®ļæĹ¶ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Send Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . send Empty Message ( HE ART _ BE AT _ HANDLER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn _ handler _ stop . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Log i (" ç»ĵæĿŁ Handler å®ļæĹ¶ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . remove Messages ( HE ART _ BE AT _ HANDLER ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn _ timer _ start . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Log i (" å¼ĢåĲ¯ Timer + Handler å®ļæĹ¶ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Timer Task () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn _ timer _ stop . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Log i (" ç»ĵæĿŁ Timer + Handler å®ļæĹ¶ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtimer . cancel () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġvar Ġexact Timer : ĠExact Timer ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġbtn _ alarm _ manager _ start . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Log i (" å¼ĢåĲ¯ Exact Timer å®ļæĹ¶ ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġlast Send Time Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġexact Timer Ġ= ĠExact Timer ( this . application Context , Ġ 5 0 0 0 L , Ġobject Ġ: ĠExact Timer . Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcurrentTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK Log i (" Exact Timer Ġ å¿ĥ è·³ éĹ´ éļĶ ï¼ļ ${ currentTime Ġ- Ġlast Send Time }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Send Time Ġ= ĠcurrentTime ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexact Timer ?. start () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbtn _ alarm _ manager _ stop . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠK Log i (" åħ³éĹŃ ĠExact Timer Ġ å®ļæĹ¶ ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexact Timer ?. stop () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsend Heart Beat () Ġ{ ĊĠĠĠĠĠĠĠ Ġhandler . send Empty Message Delayed ( HE ART _ BE AT _ HANDLER , ĠHE ART _ BE AT _ INTERVAL ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġtimer : ĠTimer Ġ= ĠTimer () ĊĠĠĠ Ġprivate Ġfun Ġstart Timer Task () Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Send Time Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġtimer . schedule ( object Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . send Empty Message ( HE ART _ BE AT _ TIMER ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġ 0 , ĠHE ART _ BE AT _ INTERVAL ) ĊĠĠĠ Ġ} Ċ }