AlarmManager.SetExactAndAllowWhileIdle Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Sobrecargas
| Nome | Description |
|---|---|
| SetExactAndAllowWhileIdle(AlarmType, Int64, PendingIntent) |
Como |
| SetExactAndAllowWhileIdle(AlarmType, Int64, String, IExecutor, AlarmManager+IOnAlarmListener) |
Como setExact(int,long, String, OnAlarmListener, Handler), mas esse alarme poderá ser executado mesmo quando o sistema estiver em modos ociosos de baixa potência. |
SetExactAndAllowWhileIdle(AlarmType, Int64, PendingIntent)
Como #setExact(int, long, PendingIntent), mas esse alarme poderá ser executado mesmo quando o sistema estiver em modos ociosos de baixa potência.
[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
Parâmetros
- type
- AlarmType
tipo de alarme.
- triggerAtMillis
- Int64
tempo em milissegundos em que o alarme deve disparar, usando o relógio apropriado (dependendo do tipo de alarme).
- operation
- PendingIntent
Ação a ser executada quando o alarme disparar; normalmente vem de PendingIntent#getBroadcast
IntentSender.getBroadcast().
- Atributos
Comentários
Como setExact(int,long, PendingIntent), mas esse alarme poderá ser executado mesmo quando o sistema estiver em modos ociosos de baixa potência. Se você não precisar do agendamento exato do alarme, mas ainda precisar executar enquanto estiver ocioso, considere usar setAndAllowWhileIdle(int, long, PendingIntent). Esse tipo de alarme só deve ser usado para situações em que, na verdade, é necessário que o alarme desative enquanto estiver ocioso . Um exemplo razoável seria para uma notificação de calendário que deve fazer um som para que o usuário esteja ciente dele. Quando o alarme for enviado, o aplicativo também será adicionado à lista temporária de isenção de energia do sistema por aproximadamente 10 segundos para permitir que esse aplicativo adquira novos bloqueios de ativação para concluir seu trabalho.
Esses alarmes podem afetar significativamente o uso de energia do dispositivo quando ociosos (e, portanto, causar uma culpa significativa da bateria para o aplicativo que os agenda), portanto, eles devem ser usados com cuidado. Para reduzir o abuso, há restrições sobre a frequência com que esses alarmes dispararão para um determinado aplicativo. Em operação normal do sistema, ele não enviará esses alarmes mais do que a cada minuto (momento em que cada alarme pendente é expedido); quando em modos ociosos de baixa potência essa duração pode ser significativamente maior, como 15 minutos.
Ao contrário de outros alarmes, o sistema é livre para reagendar esse tipo de alarme para acontecer fora de ordem com quaisquer outros alarmes, mesmo aqueles do mesmo aplicativo. Isso ocorrerá claramente quando o dispositivo estiver ocioso (já que esse alarme pode disparar enquanto estiver ocioso, quando quaisquer outros alarmes do aplicativo serão mantidos até mais tarde), mas também podem ocorrer mesmo quando não estiverem ociosos. Observe que o sistema operacional permitirá mais flexibilidade para agendar esses alarmes do que alarmes exatos regulares, uma vez que o aplicativo optou por esse comportamento. Quando o dispositivo está ocioso, pode levar ainda mais liberdades com o agendamento para otimizar a duração da bateria.
Observação: começando com Build.VERSION_CODES. S, os aplicativos destinados ao SDK nível 31 ou superior precisam solicitar a permissão SCHEDULE_EXACT_ALARM para usar essa API, a menos que o aplicativo esteja isento de restrições de bateria. O usuário e o sistema podem revogar essa permissão por meio da tela de acesso especial do aplicativo em Configurações. Observação: os alarmes exatos só devem ser usados para recursos voltados para o usuário. Para obter mais detalhes, consulte a permissão de alarme exata. Os alarmes agendados por meio dessa API poderão iniciar um serviço em primeiro plano mesmo se o aplicativo estiver em segundo plano.
Consulte também:
Referência do Android para android.app.AlarmManager.setExactAndAllowWhileIdle.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.
Aplica-se a
SetExactAndAllowWhileIdle(AlarmType, Int64, String, IExecutor, AlarmManager+IOnAlarmListener)
Como setExact(int,long, String, OnAlarmListener, Handler), mas esse alarme poderá ser executado mesmo quando o sistema estiver em modos ociosos de baixa potência.
[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
Parâmetros
- type
- AlarmType
tipo de alarme. O valor é um dos seguintes: RTC_WAKEUP; RTC; ELAPSED_REALTIME_WAKEUP; ELAPSED_REALTIME
- triggerAtMillis
- Int64
A hora exata em milissegundos, em que o alarme deve ser entregue, expressa nas unidades do relógio apropriadas (dependendo do tipo de alarme).
- tag
- String
Uma marca de cadeia de caracteres usada para identificar esse alarme em logs e na atribuição de bateria. Esse valor não pode ser nulo.
- executor
- IExecutor
O Executor no qual executar o retorno de chamada onAlarm() do ouvinte. Esse valor não pode ser nulo.
- listener
- AlarmManager.IOnAlarmListener
Instância OnAlarmListener cujo método onAlarm() será chamado quando a hora do alarme for atingida. Esse valor não pode ser nulo.
- Atributos
Comentários
Como setExact(int,long, String, OnAlarmListener, Handler), mas esse alarme poderá ser executado mesmo quando o sistema estiver em modos ociosos de baixa potência.
Os alarmes baseados em ouvintes podem ser cancelados pelo sistema Android sempre que o processo de chamada não tiver mais nenhum componente em execução, como Atividade, Serviço ou ContentProvider, portanto, use apenas essas APIs quando não precisar receber alarmes após a conclusão do componente atual e também certifique-se de cancelá-las (OnAlarmListener) quando isso acontecer. Por exemplo, se você usar essas APIs de uma Atividade, cancele os respectivos alarmes quando a atividade for concluída. Se você precisar receber o alarme mesmo depois disso, use as APIs baseadas em PendingIntent.
Referência do Android para android.app.AlarmManager.setExactAndAllowWhileIdle.
Partes desta página são modificações baseadas no trabalho criado e compartilhado pelo Project Open Source do Open Source e usadas de acordo com os termos descritos na Creative Commons 2.5.