2010-11-01 17 views
3

我在我的應用程序中有一個方法,我想根據用戶選擇的方式重複調用。就像用戶每選擇一小時一樣,活動就會觸發一個每小時被調用的方法。我想知道安排這個重複任務的最佳方式。設置重複任務的最佳方法

我一直在嘗試用定時器和定時器的工作,但由於某種原因不能似乎並不當我使用Java日曆類用它,像這樣的工作:

Calendar c1 = Calendar.getInstance(); 
      c1.add(Calendar.SECOND, 30);  
    updateTimer.scheduleAtFixedRate(cleanCompletedCache, c1.getTimeInMillis(),hour); 

,從我已經閱讀,處理程序不適合這個多重任務。我是否必須爲此使用警報管理器,爲什麼上面的代碼不能正確執行?謝謝

+0

我有一個類似的問題,所以我只是使用下面的代碼來保持在特定時間設置新的調用(SHORT_UPDATE_INTERVAL是我創建的變量不是系統常量)。 \t \t timer.schedule(新的TimerTask(){ \t \t @覆蓋 \t \t \t \t公共無效的run(){ \t \t //調用程序在這裏 \t \t \t timerEvent(); \t \t} \t \t },SHORT_UPDATE_INTERVAL); – Jim 2010-11-01 21:54:55

+0

謝謝你會檢查這種方法。但我想我也看到了一種方法來處理這個問題。不管怎麼說,還是要謝謝你 – irobotxxx 2010-11-02 11:04:43

回答

3

你想AlarmManager和它的setRepeating或setInexactRepeating調用。

在那裏,您計劃將Intent交付給您的應用程序,並編寫一個意圖接收器來處理它。這樣,您的應用程序的激活完全是Android系統的責任,並且您的應用程序不需要運行整個小時,而是等待激活。

如果出於某種奇怪的原因,您需要在定時器調用之間運行代碼,則需要保持後臺服務正在運行,但仍然使用AlarmManager來獲取喚醒。

相關問題