use Handler.postDelayed for repeated task
[WhereAmI.git] / src / org / average / whereami / WhereAmI.java
index 6fdbf34935b0bd42418938438036f319ba0d184d..11867938dfed201f1baca8a0cd6d9f36b6d51766 100644 (file)
@@ -2,11 +2,19 @@ package org.average.whereami;
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.os.AsyncTask;
+import android.os.Handler;
+import android.os.SystemClock;
+import android.util.Log;
+import android.view.View;
 import android.view.Window;
 import android.view.WindowManager;
+import android.widget.TextView;
 
 public class WhereAmI extends Activity
 {
+    private TextView tv;
+
     /** Called when the activity is first created. */
     @Override
     public void onCreate(Bundle savedInstanceState)
@@ -16,5 +24,41 @@ public class WhereAmI extends Activity
         getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
         getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
         setContentView(R.layout.main);
+        tv = (TextView)findViewById(R.id.tv);
+        Log.v("WhereAmI", "created UI, about to start update task");
+       mHandler.postDelayed(updateClock, 2000);
+        Log.v("WhereAmI", "created UI, update task created");
+    }
+
+    private Handler mHandler = new Handler();
+
+    private Runnable updateClock = new Runnable () {
+        public void run() {
+            long millis = System.currentTimeMillis();
+            Log.v("updateClock", "executing");
+            // new TimedUpdateTask().execute(5); // for delayed execution
+            tv.setText(Long.toString(millis));
+            mHandler.postDelayed(this, 2000);
+        }
+    };
+
+    private class TimedUpdateTask extends AsyncTask<Integer, Void, String> {
+       @Override
+        protected String doInBackground(Integer... howlong) {
+            Log.v("TimedUpdateTask", "starting");
+            try {
+                Thread.sleep(1000 * howlong[0]);
+            } catch (InterruptedException e) {
+                Log.e("TimedUpdateTask", "sleep interrupted");
+            }
+            Log.v("TimedUpdateTask", "about to return");
+            return (Integer.toString(howlong[0]) + " seconds passed");
+        }
+    
+       @Override
+        protected void onPostExecute(String str) {
+            Log.v("TimedUpdateTask", "callback executing");
+            tv.setText(str);
+        }
     }
 }