如何在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