AlarmManager.SetRepeating(AlarmType, Int64, Int64, PendingIntent) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
排程重複的警示。
[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> 自 API 19 起,所有重複的警示都不符。 如果您的應用程式需要精確的傳遞時間,則必須使用一次性確切的警示,每次重新排程,如上所述。 早於 API 19 的舊版應用程式 targetSdkVersion
會繼續擁有其所有警示,包括重複的警示,視為確切的。
如果應用程式想要將警示計數提供給索引鍵,則目標 Build.VERSION_CODES#S
應用程式必須在用來設定此警示的旗標 PendingIntent#FLAG_MUTABLE
上 PendingIntent
設定旗標 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)