I’m trying to perform an action periodically. I want to create a new instance of a class after, say, ever 3 seconds. Would it be best to implement this by using a Handler or a Thread? Is there an easier, sort of dopey way I could try? I’m really not good at using threads – I want to learn, but it is more important that I get this to function before worrying about good programming practices.
new Thread(){
public void run(){
//makes sure the player still has 3 lives left
while(game == false){
uiCallback.sendEmptyMessage(0);
try {
Thread.sleep(2000); // wait two seconds before drawing the next flower
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //sleep for 2 seconds
}
}
}.start();
I’m doing something similar in my android app; I update some data in my interface every 10 seconds. There are many ways to do this, but I chose to use a
Handlerbecause it’s very simple to implement:As you may know, you cannot run periodic functions like this in the UI thread, because it will block the UI. This creates a new
Threadthat sends a message to the UI when it is done, so you can update your UI with the new results of whatever your periodic function does.If you do not need to update the UI with the results of this periodic function, you can simply ignore the second half of my code example, and just spawn a new
Threadas shown. Beware, however: if you are modifying variables shared by this newThreadand the UI, you are going to run into problems if you don’t synchronize. In general, threading is not an area where you want to ignore “good programming practices” because you’ll get strange, non-predictable errors and you’ll be cursing your program.-tjw