Android 安卓通知&;Alarmmanager-计时不同

Android 安卓通知&;Alarmmanager-计时不同,android,notifications,alarmmanager,timing,Android,Notifications,Alarmmanager,Timing,我通过BroadcastReceiver和AlarmManager发出了定时通知: static public void setReminderNotification(Context c){ AlarmManager alarmManager = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE); Intent alarmIntent = new Intent(c, ReminderReceiver.class)

我通过BroadcastReceiver和AlarmManager发出了定时通知:

static public void setReminderNotification(Context c){
    AlarmManager alarmManager = (AlarmManager) c.getSystemService(Context.ALARM_SERVICE);

    Intent alarmIntent = new Intent(c, ReminderReceiver.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(c, 12460, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);

    iTime = 24000;
    if (iTime > 0) {
        alarmManager.cancel(pendingIntent);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + iTime, iTime, pendingIntent);
    }else if(iTime == 0){
        alarmManager.cancel(pendingIntent);
    }
}
我意识到,闹钟并不是每24秒响一次。视情况而定。我在接收器上做了记录:(格式:H-m-s)

我想知道为什么通知有时更短/更长。
有什么办法解决这个问题吗?

据我们所知,AlarmManager并不精确。
在纽约,你有

public void setExact (int type, long triggerAtMillis, PendingIntent operation)

注意:从API 19(KITKAT)开始,警报传递是不精确的:操作系统将切换警报,以尽量减少唤醒和电池使用。有新的API支持需要严格交付保证的应用程序;请参见设置窗口(int,long,long,pendingent)和设置精确窗口(int,long,pendingent)。targetSdkVersion早于API 19的应用程序将继续看到之前的行为,其中所有警报都会在请求时准确传递


请参见此处

您能在启动报警服务的地方张贴代码吗
public void setExact (int type, long triggerAtMillis, PendingIntent operation)