我试图在我的应用程序中创建一个功能,该功能在他租借的书籍的到期日通知用户。我将使用listview中的复选框,如下所示:
(日期仅供展示用途)
现在我想知道我怎样才能做到最好。我有使用AlarmManager和BroadcastReceivers的经验,但我还没有得到一个清晰的流程图。
这是因为我需要为每本书设置特定警报,并在请求时取消该特定警报。此外,它需要在重新设备时重新激活所有警报(通过调用BOOT_COMPLETE广播)。
PS。:警报通常会在当前日期后的一周内设置。
PS2。:我可以使用日历吗?我的意思是,这样我就不必重新激活所有警报,或以毫秒计算(expirationDate - currentDate)。
有想法的人可以试着给我指路吗?谢谢!
答案 0 :(得分: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广播时,您可以从SharedPreferences获取警报ID列表以及时间戳,并使用各自的警报ID启动所有警报