androidtextviewself-updating

Updating TextView every N seconds?


I've been very confused about this recently and can't find an answer anywhere.

When programming for android, I want to update a textview every 10 seconds, but how would I go about that? I've seen some samples use "Run()" and "Update()", but that doesn't seem to help when I try it, any ideas?

Right now I have:

public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.slideshow); CONST_TIME = (int) System.currentTimeMillis(); Resources res = getResources(); myString = res.getStringArray(R.array.myArray); } public void checkTime(View V){ TextView text = (TextView) findViewById(R.id.fadequote); CUR_TIME = (int) System.currentTimeMillis(); text.setText(""+(int) (CUR_TIME-CONST_TIME));//Debugs how much time has gone by if(CUR_TIME-CONST_TIME>10000){ getNextQuote(null); //A function that gets a random quote CONST_TIME = CUR_TIME; } }

I guess what I'm REALLY asking is how do I make checkTime() repeat it-self endlessly until onPause() is called?


Solution

  • What about using a timer?

    private Timer timer = new Timer();
    private TimerTask timerTask;
    timerTask = new TimerTask() {
     @Override
     public void run() {
        //refresh your textview
     }
    };
    timer.schedule(timerTask, 0, 10000);
    

    Cancel it via timer.cancel(). In your run() method you could use runOnUiThread();

    UPDATE:

    I have a livescoring app, which uses this Timer to update it every 30 sec. It looks like this:

    private Timer timer;
    private TimerTask timerTask;
    
    public void onPause(){
        super.onPause();
        timer.cancel();
    }
    
    public void onResume(){
        super.onResume();
        try {
           timer = new Timer();
           timerTask = new TimerTask() {
              @Override
              public void run() {
             //Download file here and refresh
              }
           };
        timer.schedule(timerTask, 30000, 30000);
        } catch (IllegalStateException e){
           android.util.Log.i("Damn", "resume error");
        }
    }