我希望能够在指定的延迟后调用以下方法。在目标 c 中,有类似以下内容:
[self performSelector:@selector(DoSomething) withObject:nil afterDelay:5];android 和 java 中的此方法是否等效?例如,我需要能够在 5 秒钟后调用一个方法。
public void DoSomething()
{
     //do something here
}Handler().postDelayed({
  //Do something after 100ms
}, 100)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);
  ⋮
}