Android时间延迟

时间:2013-08-24 17:49:36

标签: android multithreading delay

如何延迟可以在一段时间后调用函数,但线程仍然应该运行。有没有比这更好的方法。

new Thread(new Runnable() { 
    public void run(){
        try{ Thread.sleep(recordtime); }
        catch(Exception e){}

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                reset();
            }
        });
    }
}).start();

1 个答案:

答案 0 :(得分:1)

在Ui线程上运行一些代码,经过一段时间的延迟:

   Handler h = new Handler(Looper.getMainLooper());

    Runnable r = new Runnable() {
        @Override
        public void run() {
            //--code run in Main, UI thread  
        }
    };

    h.postDelayed(r,2000); //-- run after 2 seconds

处理程序在目标线程上需要Looper。 UI线程已经拥有它,需要首先配置其他线程。

其他选项包括:

Timer

  Timer t = new Timer();

    t.schedule(new TimerTask() {
        @Override
        public void run() {
           //--code run in separate thread  
        }
    },2000);

ScheduledExecutorService

    ScheduledExecutorService se = Executors.newSingleThreadScheduledExecutor();

    se.schedule(new Runnable() {
        @Override
        public void run() {
            //--code run in separate thread
        }
    },2, TimeUnit.SECONDS);