Android AlarmManager 一小时后触发

Posted

技术标签:

【中文标题】Android AlarmManager 一小时后触发【英文标题】:Android AlarmManager to Trigger After One Hour 【发布时间】:2014-02-18 19:46:40 【问题描述】:

我正在尝试做一些非常简单的事情!我有一个 sessionTimeout 变量,其值为 3600000 毫秒,这意味着 60 分钟/1 小时。我需要在 60 分钟后设置闹钟。我正在使用以下代码,但 calendar.getTimeInMillis 给了我非常高的价值。如果我只是在 alarmManager 中传递 3600000,它仍然不起作用并立即触发警报接收器。

private void setupSessionTimeoutAlarm()

    Calendar calendar = Calendar.getInstance();
    calendar.add(calendar.MILLISECOND,(int) sessionTimeout);
    long timeInMilliSeconds = calendar.getTimeInMillis() + sessionTimeout;

    // schedule the alarm
    Intent myIntent = new Intent(Gateway.this, AlarmReceiver.class);
    pendingIntent = PendingIntent.getBroadcast(Gateway.this, 0, myIntent,0);

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP,timeInMilliSeconds,pendingIntent);

【问题讨论】:

在此处查看接受的答案:***.com/questions/3447594/…。您需要在清单中注册 AlarmReceiver 才能捕获警报事件。 在旁注中,您似乎将 sessionTimeout 添加到当前时间两次。 timeInMilliSeconds 应该这样设置: long timeInMilliSeconds = calendar.getTimeInMillis(); 【参考方案1】:
  Calendar calendar = Calendar.getInstance();
    Date date = new Date();
    date.setTime(System.currentTimeMillis() + (60 * 60 * 1000));
    calendar.setTime(date);
    Log.i(TAG, "start: " + calendar.getTime().getMinutes());
    Log.i(TAG, "start: " + calendar.getTime().getHours());
    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(context, A3LocationUpdateReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(context, Configuration.LocationUpdateEveryHoursRequest, intent, 0);
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_HOUR,
            pendingIntent);

【讨论】:

以上是关于Android AlarmManager 一小时后触发的主要内容,如果未能解决你的问题,请参考以下文章

在alarmmanager中点击通知后打开活动并广播Kotlin

AlarmManager set 设置定时闹钟,延时执行的问题

AlarmManager set 设置定时闹钟,延时执行的问题

AlarmManager set 设置定时闹钟,延时执行的问题

Android警报事件延迟

带有 AlarmManager 和配置的 Android 小部件