I have some location finding code and while I'm waiting for a read of an appropriate accuracy I'd also like to have a timeout and use whatever the best location read is up to that point.
I seem to be misunderstanding how to cancel and restart a timer.
I want to start a timeout timer when I begin my search and restart the timer every time I repeat my search...
private void refreshLocation() {
if (locationTimeoutTimer != null) {
locationTimeoutTimer.cancel();
locationTimeoutTimer.purge();
}
locationTimeoutTimer = new Timer();
locationTimeoutTimer.schedule(timeoutReached, 60000);
//Do other things...
}
However, I get the following error whenever this refreshLocation is called a second time.
java.lang.IllegalStateException: TimerTask is scheduled already
Your code is very similar to code I have - that is working. But some differences I notice are that
locationTimer = new Timer("locationtimer", true);
locationTimer.schedule(new timeoutReached(), 60000);
Timer doesn't work correctly on UI. Never. Use Handler. You can take also my class for it: It start/ stops the timing and shows the time and/or date in the registered TextView fields.