package Ġdev . ent ao . app base . ex Ċ Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġent ao yang @ 1 6 3 . com Ġon Ġ 2 0 1 8 - 0 7 - 3 0 . Ċ Ġ*/ ĊĊ Ċ class ĠMy Timer ( var Ġcallback : Ġ( My Timer ) Ġ-> ĠUnit Ġ= Ġ{}) Ġ{ ĊĊ ĉ var Ġtimer : ĠTimer ? Ġ= Ġnull Ċ ĉ var Ġpaused : ĠBoolean Ġ= Ġfalse ĊĊĊ ĉ @ Synchron ized Ċ ĉ fun Ġcancel () Ġ{ Ċĉ ĉ timer ?. cancel () Ċĉ ĉ timer Ġ= Ġnull Ċĉ ĉ paused Ġ= Ġfalse Ċ ĉ } ĊĊ ĉ @ Synchron ized Ċ ĉ fun Ġschedule ( delay : ĠLong ) Ġ{ Ċĉ ĉ cancel () Ċĉ ĉ val Ġt Ġ= ĠTimer ( true ) Ċĉ ĉ t . schedule ( make Task (), Ġdelay ) Ċĉ ĉ this . timer Ġ= Ġt ĊĊ ĉ } ĊĊ ĉ @ Synchron ized Ċ ĉ fun Ġrepeat ( period : ĠLong , Ġdelay : ĠLong Ġ= Ġperiod ) Ġ{ Ċĉ ĉ cancel () Ċĉ ĉ val Ġt Ġ= ĠTimer ( true ) Ċĉ ĉ this . timer Ġ= Ġt Ċĉ ĉ t . schedule At Fixed Rate ( make Task (), Ġdelay , Ġperiod ) Ċ ĉ } ĊĊ ĉ private Ġfun Ġmake Task (): ĠTimer Task Ġ{ Ċĉ ĉ return Ġobject Ġ: ĠTimer Task () Ġ{ Ċĉĉ ĉ override Ġfun Ġrun () Ġ{ Ċĉĉĉ ĉ if Ġ(! paused ) Ġ{ Ċĉĉĉĉ ĉ callback . invoke ( this @ My Timer ) Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } Ċ ĉ } Ċ Ċ }