PendingIntent比我预期的更早触发

时间:2014-02-23 08:30:43

标签: java android

我在Android中开发闹钟时遇到问题。 当我触发PendingIntent包含必须在预定时间启动的Activity时,它运行良好。 但是,当闹铃响起并按下贪睡5分钟并触发带有不同请求代码的SAME Activity时,它会在我按下贪睡后立即启动。

以下是PushActivity中源代码的一部分:

private void setAlarm() {
    final int FIVE_MINUTES = 1000 * 60 * 5;
    int replacedCode = alarmCode + 1;
    attempt = attempt+1;
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, PushActivity.class);
    PendingIntent pendingIntent = PendingIntent.getActivity(PushActivity.this,
            replacedCode, intent, PendingIntent.FLAG_CANCEL_CURRENT);
    alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, FIVE_MINUTES,
    pendingIntent);
}

1 个答案:

答案 0 :(得分:3)

需要根据set()指定警报类型为ELAPSED_REALTIME_WAKEUP的{​​{1}}的时间值。如果您希望在五分钟后执行某项操作,请使用SystemClock.elapsedRealtime(),而不仅仅是SystemClock.elapsedRealtime()+FIVE_MINUTES