2016-06-08 406 views
0

我試圖在我的應用程序中創建一個函數,該函數在他租用的書籍到期當天通知用戶。我將與複選框在ListView工作,如下圖所示:Android設置多個長日期鬧鐘

No description

(日期僅用於展示目的)

現在我想知道我怎麼能做到這一點的最好辦法。我有AlarmManager和BroadcastReceivers的經驗,但我還沒有得到清晰的流程圖。

那是因爲我需要一個特定的報警設置爲每本書取消特定的報警要求時。此外,它需要重新激活設備時,所有警報(通過調用BOOT_COMPLETE廣播)。

PS .:警報通常會設置爲當前日期後的一週。

PS2 .:我可以使用日曆來完成它嗎?我的意思是,這樣我就不必重新激活所有的警報,或以毫秒計算(expirationDate - currentDate)。

有人有一個想法,試圖告訴我的方式?謝謝!

回答

1

我認爲關鍵在於第一次爲本書設置鬧鐘時,爲每本書都設置自己的鬧鐘ID。

然後你應該保留一個運行的警報ID和時間戳列表(可能在SharedPreferences中)。

有了這樣的方法,你可以取消至於其報警ID的特定報警:

public static void cancelAlarm(Context context, int alarmId) { 
    PendingIntent pi = PendingIntent.getService(context, alarmId, 
      new Intent(context, YourService.class), 
      PendingIntent.FLAG_NO_CREATE); 
    if(pi!=null) { 
     AlarmManager am = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); 
     am.cancel(pi); 
    } 
} 

當您收到BOOT廣播,你可以報警的列表與時間戳一起IDS從SharedPreferences和使用各自的報警ID啓動所有報警

+0

謝謝!我會試試這種方式。 –