OSDN Git Service

暫定レイアウト
[gokigen/JoggingTimer.git] / wear / src / main / java / net / osdn / gokigen / joggingtimer / stopwatch / MyTimerTrigger.java
1 package net.osdn.gokigen.joggingtimer.stopwatch;
2
3 /**
4  *
5  *
6  */
7 class MyTimerTrigger implements ITimerStopTrigger
8 {
9     private final ITimeoutReceiver triggerReceiver;
10     private final long duration;
11     private final ITimerCounter timerCounter;
12     private boolean forceStop = false;
13
14     MyTimerTrigger(ITimeoutReceiver triggerReceiver, long duration, ITimerCounter timerCounter)
15     {
16         this.triggerReceiver = triggerReceiver;
17         this.duration = duration;
18         this.timerCounter = timerCounter;
19     }
20
21     void startTimer()
22     {
23         Thread thread = new Thread(new Runnable() {
24             @Override
25             public void run()
26             {
27                 if (timerCounter != null)
28                 {
29                     do {
30                         try {
31                             Thread.sleep(duration);
32                         } catch (Exception e) {
33                             // timeout! (But, do nothing!)
34                         }
35                         if (triggerReceiver != null)
36                         {
37                             triggerReceiver.timeout();
38                         }
39                     } while ((timerCounter.isStarted())&&(!forceStop));
40                 }
41                 forceStop = false;
42             }
43         });
44         try
45         {
46             thread.start();
47         }
48         catch (Exception e)
49         {
50             e.printStackTrace();
51         }
52     }
53
54     @Override
55     public void forceStop()
56     {
57         forceStop = true;
58     }
59
60     public interface ITimeoutReceiver
61     {
62         void timeout();
63     }
64 }