2013-10-25 65 views
0

我最近剛學過並開發了一個小部件。我知道這個小部件每隔30到60分鐘就有一次自動更新。現在我被要求將自動更新減少到5分鐘。如何在24/7上爲服務設置倒數計時器

所以我想創建另一個Service Thread,每隔5分鐘不斷運行一個倒數計時器並刷新應用程序以檢查是否有任何可能的錯誤。這些錯誤實際上是ping測試結果。如果服務器關閉,我將執行Toast Message通知用戶此服務器已關閉。

那麼,我應該怎麼做呢?或者有更好的建議。請賜教。

回答

1

願這可以幫助你:

好友使用TimerTask特定的時間間隔後打電話到

Timer timer = new Timer(); 
timer.schedule(new UpdateTimeTask(),1, TimeInterval); 

class UpdateTimeTask extends TimerTask { 

     public void run() 
      {   
       // code here 
      } 

     } 

或者您可以使用AlaramManager也:

套裝AlarmManager這樣的:

private static final int REPEAT_TIME_IN_SECONDS = 60; //repeat every 60 seconds 

AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 

alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), 
      REPEAT_TIME_IN_SECONDS * 1000, pendingIntent); 

變化AlarmManager.RTCAlarmManager.RTC_WAKEUP如果u想,當它熄滅喚醒電話。關於AlarmManager的更多信息​​

這兩個參數也意味着您的鬧鐘時間將爲UTC時間的System.currentTimeMilis()

+0

我也會研究這個。謝謝。 –

+0

歡迎巴迪..我已經添加了一些更多的代碼,以便您可以有更多的選項,即'AlaramManager' –

+0

天哪,真棒。再次感謝! –

0

我認爲更好的使用可運行postDelayed,像這樣:

private Handler handler = new Handler(); 
private Runnable runnable = new CustomRunnable(); 

private class CustomRunnable implements Runnable { 
     public void run() { 
      // your logic 
      handler.postDelayed(runnable, REFRESH_TIME); 
     } 
    } 

REFRESH_TIME - 你常以毫秒刷新。只需運行一次handler.postDelayed(runnable,REFRESH_TIME);你想要的地方。

+0

好的。我會研究這一點。感謝您的快速回復。 –

+0

因此,** REFRESH_TIME **是我想要的持續時間? –

+0

是的,以毫秒爲單位 – 18446744073709551615