package Ġcom . sf express . tc ic . android . wi get Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . util . Sparse Array Ċ Ċ /** Ċ Ġ* Ġ çĽĳ æİ§ å¤ļä¸ª ä»»åĬ¡ çļĦ å®ļæĹ¶ åĻ¨ Ċ Ġ*/ Ċ class ĠMulti Count Timer ( private Ġvar Ġm Default Interval : ĠLong ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Ticks Ġ= ĠSparse Array < Count Timer Task >() ĊĊĠĠĠ Ġ@ Suppress Lint (" Handler Leak ") ĊĠĠĠ Ġprivate Ġval Ġm Handler Ġ= Ġobject Ġ: ĠHandler () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( msg : ĠMessage ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġmsg . what ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsynchronized ( this @ Multi Count Timer ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġm Ticks . get ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( task Ġ== Ġnull Ġ|| Ġtask . state Ġ!== ĠState . TIMER _ RUNNING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtask . tick And Next () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġadd ( task : ĠCount Timer Task ): ĠMulti Count Timer Ġ{ ĊĠĠĠĠĠĠĠ Ġtask . attach Handler ( m Handler ) ĊĠĠĠĠĠĠĠ Ġif Ġ( task . m Count Interval Ġ== ĠCount Timer Task . INVALID _ INTERVAL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtask . m Count Interval Ġ= Ġm Default Interval ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Ticks . append ( task . m Id , Ġtask ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġstart All () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġm Ticks . size () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġm Ticks . key At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Ticks . get ( key ). start () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġcancel All () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġm Ticks . size () ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġm Ticks . key At ( i ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Ticks . get ( key ). cancel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġm Ticks . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġstart ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġm Ticks . get ( id ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġtask . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġpause ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġm Ticks . get ( id ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġtask . pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġresume ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġm Ticks . get ( id ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġtask . resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġfun Ġcancel ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtask Ġ= Ġm Ticks . get ( id ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġtask . cancel () ĊĠĠĠĠĠĠĠ Ġm Ticks . remove ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠDEFAULT _ INTERVAL : ĠLong Ġ= Ġ 1 0 0 0 ĊĠĠĠ Ġ} Ċ Ċ } Ċ