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?
incase it helps someone here is an example code using
postDelayed()
...
...
...
What about using a timer?
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:
I agree with Wired00's answer but please follow this order:
Rather than fuss with a background thread and then
runOnUiThread()
, usepostDelayed()
, available on anyView
, to schedule aRunnable
. ThatRunnable
can update yourTextView
and then schedule itself for the next pass. Using a background thread for the purposes of watching time tick by is a waste.Use a thread. See Painless Threading.