2013-02-23 19 views
2

我一直在開發iOS應用程序很長一段時間,現在我已切換到android。我有一個要求,當視圖出現(onResume)時,我必須啓動計時器(在Android中,我需要使用處理程序),並在視圖消失(onPause)時使計時器(停止處理程序)失效。我能夠創建可運行的Handler,但無法阻止它。 我的代碼是:當視圖出現時創建計時器(Handler)並在視圖消失時停止它

 protected void AutoRefresh() { 
    try{ 
handler.postDelayed(new Runnable() { 
        public void run() { 
          new LongOperation().execute(""); 
         } 
         AutoRefresh(); 

       }, 60000); 
    } 
     catch(Exception ex){ 

     } 

} 

現在,我怎樣才能制止這種此處理線程時視野中消失。如果它不是在android中執行計時器實現的正確方法,請同時發表評論。

+0

Android TimerTask中有一個類。使用它。 – 2013-02-23 09:14:54

回答

2

當視圖出現(onResume)和無效定時器(停止處理程序)時 視圖消失(onPause)。我能夠創建可運行的處理程序,但不能 能夠阻止它。

保持一個參考Runnable你使用:

private Runnable mRefresh = new Runnable() { 
    public void run() { 
      new LongOperation().execute(""); 
    } 
    AutoRefresh(); 
} 
//... 
protected void AutoRefresh() { 
    handler.postDelayed(mRefresh, 60000); 
} 

和刪除它是這樣的:

handler.removeCallbacks(mRefresh); 

請記住,這將不會刪除當前Runnable是正在執行(如果有),所以在LongOperationonPostExecute方法中,您可能需要檢查Activity在重新調用之前是否仍然可用刷新UI或與Activity進行任何其他交互。

請同時評論,如果它沒有正確的方式做定時器 在android中的實現。

你似乎需要在一定的時間間隔做一個動作,並使用Handler是做到這一點的方法,我不認爲你需要一個計時器。