使用handler / runnable延迟重新提交方法

时间:2012-11-28 13:51:34

标签: java android handler runnable postdelayed

我想每10秒运行一次getVehicles()方法,我有以下代码:

Handler vehiclehandler = new Handler();
    final Runnable vehiclerunnable = new Runnable() {   
        public void run() {
            getVehicles(null);
            vehiclehandler.postDelayed(this, 10000);
        } 
    };

但目前它什么也没做,我已经四处寻找,无法弄明白。

我是Android的新手,以前从未使用过处理程序,只能通过runnable来告诉'runOnUiThread'。

3 个答案:

答案 0 :(得分:1)

你跑了

吗?
vehiclehandler.post(vehiclerunnable)

至少一次?

我的意思是在Runnable外面

答案 1 :(得分:0)

final Handler lHandler = new Handler();
Runnable lRunnable = new Runnable() {

    @Override
    public void run() {
        // do stuff
        lHandler.postDelayed(this, 10000);
    }
};
lHandler.post(lRunnable);

答案 2 :(得分:0)

以下是对代码的调整,以使其正常运行

Handler vehiclehandler = new Handler();
    vehiclehandler.postDelayed(new Runnable(){
            public void run(){
                    getVehicles(null);
            }
        },10000);

但是这只会在执行之前延迟你的代码。如果你想一遍又一遍地重复这个过程,你必须使用Timer,如:

private static Timer timer = new Timer();  
timer.scheduleAtFixedRate(new mainTask(), 0, 10000);
private class mainTask extends TimerTask
    { 
        public void run() 
        {
            getVehicles(null);
        }
    }