2012-11-26 81 views
1

爲了實現提醒,我需要設置一個備忘錄:「從今天開始,顯示備忘錄,每個星期五,一週是和一個不」 因此,我認爲我可以確定每個備忘錄,我必須展示的下一個日期是什麼。然後通過這個日期這樣的計時器:Android:剩餘時間安排事件

Timer timer = new Timer(); 

timer.schedule(new TimerTask() { 

       public void run() { 
        //show my memo  
        }); 

       }}, date); // 

現在假設週一26/11/2012我怎麼能確定出現的第一個週五(根據上述備忘錄時

我?不確定這個機制是否足夠好,如果有人可以建議我再次接受我將不勝感激

+1

查看AlarmManager類。 –

+0

但是,如果我使用AramManager,例如setRepeating方法,我無法實現上述我的備忘錄規則。我不能說AlramManger「顯示這一點,一週是,一個不是」 – GVillani82

+1

你把它分成幾部分。第一次備忘錄顯示時安排一個鬧鐘。然後,當該警報執行時,計算下一次需要顯示備忘錄併發出新警報。 –

回答

3

定時器不是一個很好的類,你應該看看AlarmManager並使用它來安排你的事件

您可以使用AlarmManager .set()設置特定的報警,AlarmManager.setInexactRepeating()設置一個重複的報警,在正確性方面有一定的靈活性,setRepeating()設置一個精確的重複報警。

在所有情況下,您都會設置一個PendingIntent,在警報觸發時啓動,並且您的應用程序應準備好正確處理該意圖。

請記住,您不一定需要在PendingIntent被觸發時採取行動:您可以檢查條件是否正確(例如,您可以添加一些邏輯關於是否應該通知用戶那點)。

更多AlarmManager和的PendingIntent:

http://developer.android.com/reference/android/app/AlarmManager.html

http://developer.android.com/reference/android/app/PendingIntent.html

此外,請記住,你必須廣播接收器添加到事件「已完成啓動順序」,這樣就可以重新安裝報警設備重新啓動後,因爲警報不會在重新啓動時持續存在。

+0

我不確定使用setInexactRepeating我可以安排我的事件 – GVillani82

+0

setInexactRepeating具有靈活性,因爲它不會強制系統在特定時間執行鬧鐘,您仍然可以安排事件。 –