Android 报警管理器延迟不工作

Android 报警管理器延迟不工作,android,Android,嗨 我使用以下代码片段在延迟后使用AlarmManager调用操作。但警报会立即启动 AlarmUtility.java public void setAlarm(Context context) { AlarmManager am = (AlarmManager) context .getSystemService(Context.ALARM_SERVICE); Intent i = new Intent(context, AlarmReceiver.c

我使用以下代码片段在延迟后使用AlarmManager调用操作。但警报会立即启动

AlarmUtility.java

public void setAlarm(Context context) {
    AlarmManager am = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
    Intent i = new Intent(context, AlarmReceiver.class);
    PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);    
    am.setRepeating(AlarmManager.RTC_WAKEUP, 1000 *24*3600,
            1000 *24*3600, pi); // Millisec * Second * Minute
    } // trying to first trigger the alarm after 24 hrs and repeat after 24 hours

请告诉我我的错误是什么

1000*24*3600
肯定是过去的错误,因此,警报将:

如果时间发生在过去,则会触发报警 立即,报警计数取决于过去的报警距离 触发时间与重复间隔有关

而是获取当前时间,然后为初始唤醒添加24小时:

Calendar calendar =  Calendar.getInstance();
calendar.add (Calendar.DATE,1);
long day = 1000 *24*3600;

am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), day , pi);

你应该这样使用:

am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+time, time, pi);

如果你想使用
1000*24*3600
,那么就使用
(1000*24*3600)L
。因为
1000*24*3600
大于
Integer.Max\u值

乍一看,问题似乎出在

am.setRepeating(AlarmManager.RTC_WAKEUP, 1000 *24*3600,
        1000 *24*3600, pi); 
第二个参数triggerAtTime应指向报警应关闭的时间。它不应该是一个时间间隔

检查以下示例:

    am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 1000 *24*3600,
        1000 *24*3600, pi);