From 26af21a8eabf516dd2426be412dc6ba7117221c9 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Fri, 26 Dec 2008 11:45:12 +0000 Subject: [PATCH] Monkey found some bugs... apparently you can't double-schedule a TimerTask. --- src/com/timsu/astrid/activities/TaskView.java | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/com/timsu/astrid/activities/TaskView.java b/src/com/timsu/astrid/activities/TaskView.java index 2f5390af2..449b94062 100644 --- a/src/com/timsu/astrid/activities/TaskView.java +++ b/src/com/timsu/astrid/activities/TaskView.java @@ -65,8 +65,7 @@ public class TaskView extends TaskModificationActivity { private NumberPickerDialog progressDialog; private Handler handler; - private Timer updateTimer; - private TimerTask updateTimerTask; + private Timer updateTimer = null; @Override protected void onCreate(Bundle savedInstanceState) { @@ -112,18 +111,6 @@ public class TaskView extends TaskModificationActivity { }, r.getString(R.string.progress_dialog), 0, 10, 0, 100); name.setTextSize(36); - - updateTimerTask = new TimerTask() { - @Override - public void run() { - handler.post(new Runnable() { - @Override - public void run() { - updateElapsedTimeText(); - } - }); - } - }; } private void setUpListeners() { @@ -230,14 +217,29 @@ public class TaskView extends TaskModificationActivity { protected void onPause() { super.onPause(); updateTimer.cancel(); // stop the timer + updateTimer = null; } @Override protected void onResume() { super.onResume(); populateFields(); + + if(updateTimer != null) + return; + updateTimer = new Timer(); // start timer - updateTimer.scheduleAtFixedRate(updateTimerTask, 0, 1000); + updateTimer.scheduleAtFixedRate(new TimerTask() { + @Override + public void run() { + handler.post(new Runnable() { + @Override + public void run() { + updateElapsedTimeText(); + } + }); + } + }, 0, 1000); } // --- event response methods