在我的方法中,我想调用另一个将在1秒后运行的方法.这就是我所拥有的.
final Timer timer = new Timer();
timer.schedule(new TimerTask() {
public void run() {
MyMethod();
Log.w("General", "This has been called one second later");
timer.cancel();
}
}, 1000);
Run Code Online (Sandbox Code Playgroud)
这是应该怎么做的?自从我使用Android以来,还有其他方法吗?可以重复没有任何问题吗?
ina*_*ruk 28
有几种选择.但这是Android特定的一个.
如果线程使用Looper(和通常所有的Activity年代,BroadcastRecevier年代和Service的方法onCreate,onReceive,onDestroy等从这样一个线程调用),那么你可以使用Handler.这是一个例子:
Handler handler = new Handler();
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
myMethod();
}
}, 1000);
Run Code Online (Sandbox Code Playgroud)
请注意,您不必在此处取消任何内容.这将仅在您创建Handler的同一个线程上运行一次.
mre*_*mre 17
Timer我建议使用ScheduledExecutorService而不是a
final ScheduledExecutorService exec = Executors.newScheduledThreadPool(1);
exec.schedule(new Runnable(){
@Override
public void run(){
MyMethod();
}
}, 1, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)