2012-11-28 66 views
0

我想運行getVehicles()方法,每10秒,我有以下代碼的方法的重新提出:使用處理程序/可運行來延遲

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

然而,它什麼都不做的那一刻,我我四處搜尋,無法弄清楚。

我是新來的android,從來沒有使用過處理程序,只有一個runnable告訴'runOnUiThread'的東西。

回答

1

做你運行

vehiclehandler.post(vehiclerunnable) 

至少一次?

我的意思之外了Runnable

+0

它不會讓我跑這個,我不知道爲什麼。我試圖運行vehiclehandler.post(vehiclerunnable,1000);它不會允許它。 – Seb

+0

「不允許」是指什麼?它會給你一個編譯時間錯誤?你在哪裏發佈帖子(Runnable)? – Blackbelt

+0

原諒我,現在看來它已經允許它,它在活動的onCreate方法中,我認爲它純粹是Eclipse,表現不正確,現在它正在工作!謝謝! – Seb

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

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

這裏是一個調整你的代碼,這將使它正常運行

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

但這隻會推遲您的代碼之前得到執行。如果你想在重複這個過程一遍又一遍,你必須使用定時器,這樣的:

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