2014-09-23 95 views
0

我正在構建一個Android應用程序,它應該在後臺從服務器通過網絡獲取定期更新。Android:以不同的睡眠時間間隔運行週期性任務

的響應是一個JSON對象同時包含數據和時間間隔,直到下一次更新:

{ 
    "data": ["blah1", "blah2", ...], 
    "nextUpdateIntervalSeconds": 3600 
} 

我想應用nextUpdateIntervalSeconds後讀取下一更新。在這個例子中,下一次更新應該在一個小時後提取。如果網絡呼叫不成功,則應使用默認的nextUpdateIntervalSeconds

如何在Android中使用不同的睡眠時間運行週期性任務?

+0

嘗試使用報警經理 – 2014-09-23 09:23:27

+0

...但不重複報警......每次執行從設置一個報警服務器代碼更新時間.. 。記住,設置鬧鐘將無法生存引導... – Selvin 2014-09-23 09:26:45

回答

3

試試這個;

final Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    @Override 
    public void run() { 
     getDataFromServer(); 
    } 
}, nextUpdateIntervalSeconds); // in ms 

編輯

你的可變nextUpdateIntervalSeconds必須具有在第一間隔的值。你應該使用你的默認值來初始化它;

public long nextUpdateIntervalSeconds = 3000; 
+0

後延遲1小時間隔...壞主意...... – Selvin 2014-09-23 09:19:19

0

我會設置在sharedPreferences的區間值,每一次我從網上servieces得到新的值,並使用設置有限區間不斷從sharedPreferences

1

時間我想用Android的AlarmManager設定一個時間覆蓋該值每次都會發出一次警報,併爲我的BroadcastReceiver註冊一個PendingIntent。在收到廣播到我的BroadcastReceiver的警報後,我會啓動一個服務來執行ypdate,並且在更新之後,我會用更新的時間間隔設置另一個一次警報。

你可以從這裏乘坐參考:http://code.tutsplus.com/tutorials/android-fundamentals-scheduling-recurring-tasks--mobile-5788

但他們已經成立,你需要改變一個時間報警和更新數據後再次調用它循環鬧鈴。 更改以下

alarms.setInexactRepeating(AlarmManager.RTC_WAKEUP, 
      updateTime.getTimeInMillis(), 
      AlarmManager.INTERVAL_DAY, recurringDownload); 

以下

alarmManager.set(AlarmManager.RTC_WAKEUP,cal.getTimeInMillis(),pendingIntent); 
相關問題