这是如何安排java方法在1秒后运行?

djc*_*uch 12 java android

在我的方法中,我想调用另一个将在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)