Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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_Android Service_Android Alarms_Android Pendingintent - Fatal编程技术网

Java 如何延迟重复报警的触发(启动时间)?

Java 如何延迟重复报警的触发(启动时间)?,java,android,android-service,android-alarms,android-pendingintent,Java,Android,Android Service,Android Alarms,Android Pendingintent,问题是我想延迟重复警报的第一次火灾。 例如,我希望这个悬而未决的意图工作后10分钟的点击不是马上,如何做到这一点 public void onClick(DialogInterface dialog, int which) { Intent intent = new Intent(Main.this, ReportService.class); AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); C

问题是我想延迟重复警报的第一次火灾。 例如,我希望这个悬而未决的意图工作后10分钟的点击不是马上,如何做到这一点

public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent(Main.this, ReportService.class);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
Calendar c = Calendar.getInstance();
PendingIntent pendingIntent = PendingIntent.getService(Main.this, 0, intent, 0);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), 112500, pendingIntent);
}
此集合中的第二个参数称为triggerAtMillis 来自Android开发者指南: TriggeratMills使用适当的时钟(取决于报警类型),以毫秒为单位,表示报警首次响起的时间。这是不准确的:在此时间之前警报不会触发,但在第一次调用警报之前,可能会有几乎整个警报间隔的延迟


我正在更改它,并且它总是在单击时启动,不会延迟,有任何帮助吗?

检查handler.postDelayed函数,您可以在其中指定延迟 在这里第二个参数是triggerAtMillis。它被用作报警首次关闭的时间(以毫秒为单位)


因此,在您的情况下,将额外的毫秒添加到
c.getTimeInMillis()
,然后您希望首先运行挂起的意图。:)

如果使用经过的\u实时时钟,请执行此操作

manager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                SystemClock.elapsedRealtime()+180000,
                180000,
                pendingIntent);

不要使用零或System.currentTimeMillis()作为已用时钟的偏移量。

谢谢,它通过将所需的延迟时间相加到第二个参数中的getTimeInMillis()来工作:alarmManager.setInexactRepeating(alarmManager.RTC_WAKEUP,c.getTimeInMillis()+180000,180000,PendingEvent);//3分钟后开始&每3分钟重复一次谢谢你,我很难找到这个答案:“将额外的毫秒添加到c.getTimeInMillis()”非常感谢