2011-03-31 152 views
1

我想讓alarmManager在每個月的下午3點執行一項任務。我會怎麼做?android alarmmanager每月啓動一次

  • 第一次啓動取決於用戶何時安裝應用程序。好吧,我可以做一些數學計算,它需要多少毫秒,它需要到本月的第五個月,但我希望有一個更簡單的方法

  • 重複選項給了我一個真正的頭痛。我只能設置一個固定的間隔。但兩個月之間的時間並不固定,因爲有時我有30天,有時31天(更不用說2月)。

我該如何做到最好?

問候, A.

回答

0

你可以這樣做更簡單,看看Date類: http://developer.android.com/reference/java/util/Date.html

,並嘗試像,僞:

// This month 5th 
Date date = new Date(); 
date.setDay(5); 
// Next month the 5th 
Date nextDate = new Date(); 
nextDate.setDay(5); 
nextDate.setMonth(date.getMonth()+1); 

您將有問題,當你來到今年底,但它比你目前所面對的問題少。

還有其他Date API,有些會爲您解決年度問題。只是看看周圍。

編輯

只注意到棄用使用日曆:

http://developer.android.com/reference/java/util/Calendar.html

Calendar now = Calendar.getInstance(); 
now.setField(Calendar.DAY_OF_MONTH, 5); 
// Next month the 5th 
Calendar nextDate = new = Calendar.getInstance(); 
nextDate.setField(Calendar.DAY_OF_MONTH, 5); 
nextDate.setField(Calendar.MONTH_OF_YEAR, date.getField(Calendar.MONTH_OF_YEAR)+1); // issues in december 
+0

'Calendar'比'Date'一個更好的選擇。 – CommonsWare 2011-03-31 15:23:04

+0

@CommonsWare我正在編輯,因爲你評論:-)通常在Java中使用DateMidnight(),因爲它有加號(持續時間);考慮數月和數年,有什麼建議? – Blundell 2011-03-31 15:26:11

+0

沒關係應該做的第一個開始日期。現在我只需要重複一點。 – AndyAndroid 2011-03-31 15:34:47