如何在Android中延迟后调用方法

我希望能够在指定的延迟后调用以下方法。 在目标c中有这样的东西:

[self performSelector:@selector(DoSomething) withObject:nil afterDelay:5];

有没有这种方法在Android与Java的等价物? 例如,我需要能够在5秒后调用一个方法。

public void DoSomething()
{
     //do something here
}

更好的版本:

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

在我的情况下,我无法使用任何其他答案。 我使用了原生的java Timer。

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

注意:当问题没有指定Android作为上下文时,给出了这个答案。 对于特定于Android UI线程的回答,请看这里。


它看起来像Mac OS API让当前线程继续,并安排任务异步运行。 在Java中,等价函数由java.util.concurrent包提供。 我不确定Android可能会施加什么限制。

private static final ScheduledExecutorService worker = 
  Executors.newSingleThreadScheduledExecutor();

void someMethod() {
  ⋮
  Runnable task = new Runnable() {
    public void run() {
      /* Do something… */
    }
  };
  worker.schedule(task, 5, TimeUnit.SECONDS);
  ⋮
}
链接地址: http://www.djcxy.com/p/87911.html

上一篇: How to call a method after a delay in Android

下一篇: C++ Nested data structure utilizing struct