語言

AlarmManager.SetExactAndAllowWhileIdle 方法

定義

多載

名稱 Description
SetExactAndAllowWhileIdle(AlarmType, Int64, PendingIntent)

像 #setExact(int, long, PendingIntent),但即使系統處於低功耗閒置狀態,這個警報仍會被允許執行。

SetExactAndAllowWhileIdle(AlarmType, Int64, String, IExecutor, AlarmManager+IOnAlarmListener)

類似 setExact(int, long, String, OnAlarmListener, Handler),但即使系統處於低功耗閒置模式,這個警報仍被允許執行。

SetExactAndAllowWhileIdle(AlarmType, Int64, PendingIntent)

像 #setExact(int, long, PendingIntent),但即使系統處於低功耗閒置狀態,這個警報仍會被允許執行。

[Android.Runtime.Register("setExactAndAllowWhileIdle", "(IJLandroid/app/PendingIntent;)V", "GetSetExactAndAllowWhileIdle_IJLandroid_app_PendingIntent_Handler", ApiSince=23)]
[Android.Runtime.RequiresPermission("android.permission.SCHEDULE_EXACT_ALARM")]
public virtual void SetExactAndAllowWhileIdle(Android.App.AlarmType type, long triggerAtMillis, Android.App.PendingIntent operation);
[<Android.Runtime.Register("setExactAndAllowWhileIdle", "(IJLandroid/app/PendingIntent;)V", "GetSetExactAndAllowWhileIdle_IJLandroid_app_PendingIntent_Handler", ApiSince=23)>]
[<Android.Runtime.RequiresPermission("android.permission.SCHEDULE_EXACT_ALARM")>]
abstract member SetExactAndAllowWhileIdle : Android.App.AlarmType * int64 * Android.App.PendingIntent -> unit
override this.SetExactAndAllowWhileIdle : Android.App.AlarmType * int64 * Android.App.PendingIntent -> unit

參數

type
AlarmType

警報類型。

triggerAtMillis
Int64

以毫秒計時,使用相應的鬧鐘(視鬧鐘類型而定)。

operation
PendingIntent

警報響起時要執行的動作;通常來自 PendingIntent#getBroadcast IntentSender.getBroadcast()。

屬性

備註

類似 setExact(int, long, PendingIntent),但即使系統處於低功耗閒置狀態,這個警報仍會被允許執行。 如果你不需要精確排程鬧鐘,但仍需要在閒置時執行,可以考慮使用 setAndAllowWhileIdle(int, long, PendingIntent)。 這類警報只能用於必須在閒置時觸發警報的情況——一個合理的例子是行事曆通知,應該發出聲音讓使用者能察覺。 警報發出後,應用程式也會被加入系統的臨時電力豁免清單,約 10 秒,讓該應用程式能取得更多喚醒鎖以完成工作。

這些警報在閒置時會大幅影響裝置的電力使用(因此會造成 App 設定的電池問題),因此使用時應謹慎。 為了減少濫用,針對特定應用程式,這些警報的觸發頻率有限制。 在正常系統運作下,這些警報不會超過每分鐘(此時每個待處理的警報都會被發出);在低功耗閒置模式下,這個持續時間可能明顯更長,例如15分鐘。

與其他警報不同,系統可自由重新排程,使其與其他警報(即使是同一應用程式的警報)不同步。 這種情況明顯會在裝置閒置時發生(因為這個鬧鐘可能會在閒置時響起,而其他 App 的鬧鐘會暫時擱置),但即使沒閒置也可能發生。 請注意,作業系統會允許自己比一般精確警報更靈活地排程這些警報,因為應用程式已選擇此行為。 當裝置閒置時,可能會對排程做更多自由,以優化電池續航。

注意:從Build.VERSION_CODES開始。S,針對 SDK 等級 31 或以上的應用程式需要申請 SCHEDULE_EXACT_ALARM 權限才能使用此 API,除非該應用程式免於電池限制。 使用者和系統可以透過設定中的特殊應用程式存取畫面撤銷此權限。 注意:精確警報應僅用於面向使用者的功能。 更多細節請參見精確警報權限。 透過此 API 排程的鬧鐘,即使應用程式在背景,仍可啟動前景服務。

另請參閱:

Android 參考資料。android.app.AlarmManager.setExactAndAllowWhileIdle

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於

SetExactAndAllowWhileIdle(AlarmType, Int64, String, IExecutor, AlarmManager+IOnAlarmListener)

類似 setExact(int, long, String, OnAlarmListener, Handler),但即使系統處於低功耗閒置模式,這個警報仍被允許執行。

[Android.Runtime.Register("setExactAndAllowWhileIdle", "(IJLjava/lang/String;Ljava/util/concurrent/Executor;Landroid/app/AlarmManager$OnAlarmListener;)V", "GetSetExactAndAllowWhileIdle_IJLjava_lang_String_Ljava_util_concurrent_Executor_Landroid_app_AlarmManager_OnAlarmListener_Handler", ApiSince=37)]
public virtual void SetExactAndAllowWhileIdle(Android.App.AlarmType type, long triggerAtMillis, string tag, Java.Util.Concurrent.IExecutor executor, Android.App.AlarmManager.IOnAlarmListener listener);
[<Android.Runtime.Register("setExactAndAllowWhileIdle", "(IJLjava/lang/String;Ljava/util/concurrent/Executor;Landroid/app/AlarmManager$OnAlarmListener;)V", "GetSetExactAndAllowWhileIdle_IJLjava_lang_String_Ljava_util_concurrent_Executor_Landroid_app_AlarmManager_OnAlarmListener_Handler", ApiSince=37)>]
abstract member SetExactAndAllowWhileIdle : Android.App.AlarmType * int64 * string * Java.Util.Concurrent.IExecutor * Android.App.AlarmManager.IOnAlarmListener -> unit
override this.SetExactAndAllowWhileIdle : Android.App.AlarmType * int64 * string * Java.Util.Concurrent.IExecutor * Android.App.AlarmManager.IOnAlarmListener -> unit

參數

type
AlarmType

警報類型。 價值屬於以下之一:RTC_WAKEUP;RTC;ELAPSED_REALTIME_WAKEUP;ELAPSED_REALTIME

triggerAtMillis
Int64

警報應發出的精確時間(毫秒),以相應時鐘單位表示(視警報類型而定)。

tag
String

一個串標籤用來識別日誌中的警報和電池歸屬。 這個值不可能為零值。

executor
IExecutor

執行者,執行監聽者 onAlarm() 回調的執行者。 這個值不可能為零值。

listener
AlarmManager.IOnAlarmListener

OnAlarmListener 實例,當警報時間到達時會呼叫其 onAlarm() 方法。 這個值不可能為零值。

屬性

備註

類似 setExact(int, long, String, OnAlarmListener, Handler),但即使系統處於低功耗閒置模式,這個警報仍被允許執行。

當呼叫程序不再執行任何元件(如 Activity、Service 或 ContentProvider)時,Android 系統可能會取消監聽器式警報,因此請只在目前元件結束後不需要再接收警報時使用這些 API,並且在警報完成時也要取消(OnAlarmListener)。 例如,如果你使用活動中的這些 API,務必在活動結束後取消相應的警報。 如果你在之後還需要收到警報,建議使用 PendingIntent 的 API。

Android 參考資料。android.app.AlarmManager.setExactAndAllowWhileIdle

本頁部分內容為基於 Open Source Project 所創建與分享的作品,並依授權條款所描述的使用進行修改。

適用於