How to call a method after a delay in Android How to call a method after a delay in Android android android

How to call a method after a delay in Android


Kotlin

    Handler(Looper.getMainLooper()).postDelayed({      //Do something after 100ms    }, 100)

Java

    final Handler handler = new Handler(Looper.getMainLooper());    handler.postDelayed(new Runnable() {      @Override      public void run() {        //Do something after 100ms      }    }, 100);


I couldn't use any of the other answers in my case.I used the native java Timer instead.

new Timer().schedule(new TimerTask() {              @Override    public void run() {        // this code will be executed after 2 seconds           }}, 2000);


Note: This answer was given when the question didn't specify Android as the context. For an answer specific to the Android UI thread look here.


It looks like the Mac OS API lets the current thread continue, and schedules the task to run asynchronously. In the Java, the equivalent function is provided by the java.util.concurrent package. I'm not sure what limitations Android might impose.

private static final ScheduledExecutorService worker =   Executors.newSingleThreadScheduledExecutor();void someMethod() {  ⋮  Runnable task = new Runnable() {    public void run() {      /* Do something… */    }  };  worker.schedule(task, 5, TimeUnit.SECONDS);  ⋮}