AlarmManager.SetRepeating(AlarmType, Int64, Int64, PendingIntent) 方法

定义

计划重复警报。

[Android.Runtime.Register("setRepeating", "(IJJLandroid/app/PendingIntent;)V", "GetSetRepeating_IJJLandroid_app_PendingIntent_Handler")]
public virtual void SetRepeating (Android.App.AlarmType type, long triggerAtMillis, long intervalMillis, Android.App.PendingIntent operation);
[<Android.Runtime.Register("setRepeating", "(IJJLandroid/app/PendingIntent;)V", "GetSetRepeating_IJJLandroid_app_PendingIntent_Handler")>]
abstract member SetRepeating : Android.App.AlarmType * int64 * int64 * Android.App.PendingIntent -> unit
override this.SetRepeating : Android.App.AlarmType * int64 * int64 * Android.App.PendingIntent -> unit

参数

type
AlarmType

警报类型。

triggerAtMillis
Int64

使用适当的时钟(具体取决于警报类型),警报应首先关闭的时间(以毫秒为单位)。

intervalMillis
Int64

警报后续重复之间的间隔(以毫秒为单位)。

operation
PendingIntent

警报关闭时要执行的操作;通常来自 PendingIntent#getBroadcast IntentSender.getBroadcast().

属性

注解

计划重复警报。 <b>注意:对于计时操作(时钟周期、超时等),使用 android.os.Handler起来更容易、更高效。</b> 如果已经为同一 IntentSender 计划了一个警报,它将首先取消。

例如 #set,除了还可以提供警报自动重复的时间段。 此警报将继续重复,直到显式删除。#cancel 如果指定的触发时间过去,警报将立即触发,警报计数取决于过去触发时间相对于重复间隔的距离。

如果警报延迟(例如系统睡眠(例如,对于非_WAKEUP警报类型),将尽快传递跳过的重复。 之后,未来警报将按原计划交付:它们不会随时间而偏移。 例如,如果已设置每小时顶部的定期警报,但手机从 7:45 到 8:45 处于睡眠状态,则一旦电话唤醒,将立即发送警报,则下一个警报将在 9:00 发送。

如果应用程序希望允许传递时间偏移,以确保至少一定时间间隔始终在警报之间运行,则采取方法是使用一次性警报,在处理每个警报传送时自行计划下一个警报。

<p class=“note”><b>Note:</b> as of API 19, all repeating alarms are inexact. 如果应用程序需要精确的交付时间,则必须使用一次性确切的警报,每次重新安排,如前所述。 低于 API 19 的旧版应用程序 targetSdkVersion 将继续具有其所有警报,包括重复警报,这些警报被视为确切的。

Build.VERSION_CODES#S目标应用需要设置用于设置此警报的PendingIntent标志PendingIntent#FLAG_MUTABLE,如果他们希望提供密钥Intent#EXTRA_ALARM_COUNT的警报计数。

适用于 . 的 android.app.AlarmManager.setRepeating(int, long, long, android.app.PendingIntent)Java 文档

本页的某些部分是根据 Android 开放源代码项目创建和共享的工作进行的修改,并根据 Creative Commons 2.5 属性许可证中所述的术语使用。

适用于

另请参阅

  • Handler
  • <xref:Android.App.AlarmManager.Set(Android.App.AlarmType%2c+System.Int64%2c+System.Int64)>
  • <xref:Android.App.AlarmManager.SetExact(Android.App.AlarmType%2c+System.Int64%2c+System.Int64)>
  • <xref:Android.App.AlarmManager.SetWindow(Android.App.AlarmType%2c+System.Int64%2c+System.Int64%2c+System.Int64)>
  • Cancel(PendingIntent)
  • SendBroadcast(Intent)
  • <xref:Android.Content.Context.RegisterReceiver(Android.Content.BroadcastReceiver%2c+Android.Content.IntentFilter)>
  • FilterEquals(Intent)