44

I am stuck with a problem, I want to wait 10 second because I want my application to start the code below after that 10 sec but without stopping that person from clicking anything else in the application (without calling Thread.sleep();).

try {    Log.v("msg", "WAIT CheckFrequencyRun");    Thread.sleep(10000); // giving time to connect to wifi       } catch (InterruptedException e) {    // TODO Auto-generated catch block    e.printStackTrace();   }   //if no network   if(wifiManager.getConnectionInfo().getNetworkId()==-1){    //stop wifi    wifiManager.setWifiEnabled(false);    Log.v("msg", "no connection");    handler.postDelayed(this, checkInterval);   }   //else connection   else{    Log.v("msg", "connection");    onDestroy();   } 
2

4 Answers 4

184

You can use this:

Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { // Actions to do after 10 seconds } }, 10000); 

For Stop the Handler, You can try this: handler.removeCallbacksAndMessages(null);

Sign up to request clarification or add additional context in comments.

Comments

20

You never want to call thread.sleep() on the UI thread as it sounds like you have figured out. This freezes the UI and is always a bad thing to do. You can use a separate Thread and postDelayed

This SO answer shows how to do that as well as several other options

Handler

TimerTask

You can look at these and see which will work best for your particular situation

Comments

3

1with handler:

handler.sendEmptyMessageDelayed(1, 10000); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 1) { //your code } } }; 

2 Comments

what is the "TRIGGER" because android documentation ask for a int could not put string
I was wrong... this is id of your message. Try with 1
2

do this on a new thread (seperate it from main thread)

 new Thread(new Runnable() { @Override public void run() { // TODO Auto-generated method stub } }).run(); 

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.