【问题标题】:Android setting multiple long date alarmsAndroid设置多个长日期闹钟
【发布时间】:2016-10-08 17:42:45
【问题描述】:

我正在尝试在我的应用程序中创建一个函数,该函数会在用户租借的图书到期时通知用户。我将在列表视图中使用复选框,如下所示:

(日期仅供展示)

现在我想知道我怎样才能做到最好。我有使用 AlarmManager 和 BroadcastReceivers 的经验,但我还没有得到清晰的流程图。

那是因为我需要为每本书设置一个特定警报,并在请求时取消该特定警报。此外,当设备重新启动时,它需要重新激活所有警报(通过调用 BOOT_COMPLETE 广播)。

PS.:闹钟通常会设置为当前日期后一周。

PS2.: 我可以用日历来做吗?我的意思是,这样我就不必重新激活所有警报,或以毫秒为单位计算 (expirationDate - currentDate)。

有想法的人可以给我指路吗?谢谢!

【问题讨论】:

    标签: android scheduled-tasks alarmmanager android-alarms


    【解决方案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 启动所有警报

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-09
      • 2011-03-17
      • 2016-09-25
      • 1970-01-01
      相关资源
      最近更新 更多