Поделиться через


AlarmManager.SetExactAndAllowWhileIdle Метод

Определение

Как и #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. Этот тип сигнализации должен <использоваться только< b>/b> для ситуаций, когда на самом деле требуется, чтобы тревога отключается во время простоя - разумный пример будет для уведомления календаря, который должен сделать звук, чтобы пользователь знал об этом. При отправке сигнализации приложение также будет добавлено в список временных исключений питания системы в течение примерно 10 секунд, чтобы позволить этому приложению получить дополнительные блокировки пробуждения, в которых завершить работу.</p>

Эти сигнализации могут значительно повлиять на использование питания устройства при простое (и, следовательно, привести к значительной вине батареи в планировании приложения), поэтому они должны использоваться с осторожностью. Чтобы уменьшить злоупотребление, существуют ограничения на частоту этих предупреждений для конкретного приложения. В обычной системной операции эти оповещения не будут отправляться больше, чем каждые минуты (в какой момент отправляется каждое ожидающее оповещение); если в режимах простоя с низкой мощностью эта длительность может быть значительно длиннее, например 15 минут.

В отличие от других оповещений, система может перепланировать этот тип тревоги, чтобы произойти вне порядка с любыми другими оповещениями, даже теми из того же приложения. Это явно произойдет, когда устройство неактивно (так как эта сигнализация может выходить во время простоя, когда любые другие оповещения из приложения будут храниться до конца), но также могут произойти, даже если не простой. Обратите внимание, что ОС позволит себе больше гибкости для планирования этих предупреждений, чем обычные точные оповещения, так как приложение выбрало это поведение. Когда устройство неактивно, это может занять еще больше свобод с планированием, чтобы оптимизировать время работы батареи.

<p class="note"><strong>Note:</strong> Starting with Build.VERSION_CODES#S, приложения, предназначенные для уровня SDK 31 или выше, должны запрашивать Manifest.permission#SCHEDULE_EXACT_ALARM SCHEDULE_EXACT_ALARM разрешение на использование этого API, если приложение не исключается из ограничений батареи. Пользователь и система могут отозвать это разрешение с помощью специального экрана доступа к приложению в параметрах.

<p class="note"><strong>Note:</strong> Alarms следует использовать только для функций, стоящих перед пользователем. Дополнительные сведения см. в разделе "Точное разрешение на сигнализацию".

Оповещения, запланированные через этот API, будут разрешены для запуска службы переднего плана, даже если приложение находится в фоновом режиме.

Документация по Java для android.app.AlarmManager.setExactAndAllowWhileIdle(int, long, android.app.PendingIntent).

Части этой страницы — это изменения на основе работы, созданной и общей проектом с открытым исходным кодом Android и используемой в соответствии с условиями, описанными в лицензии Creative Commons 2.5 Attribution.

Применяется к