title: Changing Android system clock stops timers. How can I restart them?
body: <p>I need to run a periodic task in an Android application. I currently use a timer like this:</p>
  
  <pre><code>final Handler guiHandler = new Handler();
  
  // the task to run
  final Runnable myRunnable = new Runnable() {
  
      @Override
      public void run() {
          doMyStuff();
      }
  };
  
  Timer timer = new Timer();
  timer.schedule(new TimerTask() {
  
      @Override
      public void run() {
          guiHandler.post(myRunnable);
      }
  }, 0, 30000); // run every 30 seconds
  </code></pre>
  
  <p>This does exactly what I need, but there is a problem: if I change the time on the emulator or phone, the timer stops running. This is what appears in the log when I change the time:</p>
  
  <pre><code>D/SystemClock(  331): Setting time of day to sec=1278920137
  W/SystemClock(  331): Unable to set rtc to 1278920137: Invalid argument
  </code></pre>
  
  <p>Nothing about the timer being interrupted, but it clearly doesn't run anymore after the system clock has changed. I need the task to keep running all the time as long as the application is running.</p>
  
  <p>How can I restart the timer if it gets stopped like this? There's no method on the Timer or TimerTask to check whether it's currently running, so I can't know when to reschedule it. Any ideas?</p>