Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/192.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 警报不准确_Java_Android_Alarmmanager - Fatal编程技术网

Java 警报不准确

Java 警报不准确,java,android,alarmmanager,Java,Android,Alarmmanager,我的应用程序设置了AlarmManager,每60秒触发一次。它会触发一个片段,该片段检查当前时间,并查找应用程序日历中当时是否有任何事件发生。 它一直运行得很好,直到我发现它跳过了其中一个事件。为了检查应用程序的完整性,我让片段将当前时间(0-59分钟)写入一个文本文件,看看它是否跳过了任何时间。在仔细翻阅了连续三天记录的文件后,我发现确实如此 47,48,50,50,51,52,54,54,55,56,57,58,59,0,1,2 这在任何地方都是随机发生的。它发生在3-4小时后。这是另一个

我的应用程序设置了AlarmManager,每60秒触发一次。它会触发一个片段,该片段检查当前时间,并查找应用程序日历中当时是否有任何事件发生。 它一直运行得很好,直到我发现它跳过了其中一个事件。为了检查应用程序的完整性,我让片段将当前时间(0-59分钟)写入一个文本文件,看看它是否跳过了任何时间。在仔细翻阅了连续三天记录的文件后,我发现确实如此

47,48,50,50,51,52,54,54,55,56,57,58,59,0,1,2

这在任何地方都是随机发生的。它发生在3-4小时后。这是另一个例子

1,1,3,4,5,6,7,7,9,9,10,11,12,13

AlarmManager代码似乎没有任何问题。虽然如果代码在给定时间之前跳过一分钟或触发,但在某个地方出现了错误。 下面是我在AlarmManager上使用的代码

long alertTime = new GregorianCalendar().getTimeInMillis();

    int timeInterval = 60*1000;

    Intent alertIntent = new Intent(this, AlertRec.class);

    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, alertTime, timeInterval, PendingIntent.getBroadcast(this, 1, alertIntent, PendingIntent.FLAG_UPDATE_CURRENT));
问题: 1) 为什么经理行为不规范? 2) 如何避免这种情况


我可以缩短间隔时间来解决这个问题吗?我知道60是你需要申请的最小间隔

根据此处的文档:

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

这几乎解释了其中的大部分。此外,据我所知,他们在内部增加了重复报警的最小时间限制~1分钟,因此缩短间隔可能不是最好的主意


希望这有帮助

根据此处的文档:

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

这几乎解释了其中的大部分。此外,据我所知,他们在内部增加了重复报警的最小时间限制~1分钟,因此缩短间隔可能不是最好的主意

希望这有帮助

1-因为您的目标是API级别19+。2-针对API级别18,或根据操作系统版本使用不同方法设置挂起内容。请浏览一下.1-因为您的目标是API级别19+。2-针对API级别18,或根据操作系统版本使用不同方法设置挂起内容。请看一眼这张照片。