How can I give a delay of few seconds without using threads.some function that I can call anywhere for giving delay. Android built-in function is highly preferred. Thanks
Asked
Active
Viewed 1.6k times
2 Answers
18
Use a Handler, and send either a simple message or a Runnable to it using a method such as postDelayed().
For example, define a Handler object to receive messages and Runnables:
private Handler mHandler = new Handler();
Define a Runnable:
private Runnable mUpdateTimeTask = new Runnable() {
public void run() {
// Do some stuff that you want to do here
// You could do this call if you wanted it to be periodic:
mHandler.postDelayed(this, 5000 );
}
};
Cause the Runnable to be sent to the Handler after a specified delay in ms
:
mHandler.postDelayed(mUpdateTimeTask, 1000);
If you don't want the complexity of sending a Runnable to the Handler, you could also very simply send a message to it - even an empty message, for greatest simplicity - using method sendEmptyMessageDelayed()
.

Trevor
- 10,903
- 5
- 61
- 84
-
thanks! i just added `new Handler().sendEmptyMessageDelayed(1, 2500);` however i dont know what the `int what` value represents – austin Mar 14 '13 at 19:45
-
OK, link removed. I think the answer is quite self-contained as it is still. – Trevor Aug 06 '14 at 12:37
0
Call delayed method from a static context
public final class Config {
public static MainActivity context = null;
}
In MainActivity:
@Override
protected void onCreate(final Bundle savedInstanceState) {
...
Config.context = this;
...
}
...
public void execute_method_after_delay(final Callable<Integer> method, int millisec)
{
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
try {
method.call();
}
catch (Exception e) {
}
}
}, millisec);
}
From any class using static methods:
private static void a_static_method()
{
int delay = 3000;
Config.context.execute_method_after_delay(new Callable<Integer>() {
public Integer call() {
return method_to_call();
}
}, delay);
}
public static Integer method_to_call()
{
// DO SOMETHING

Cyril Jacquart
- 2,632
- 3
- 25
- 24