Issue di Xamarin Android Alarm Manager

Ho un AlarmManager nella mia applicazione Android di Xamarin. Sto configurando usando SetExact() con il tempo di 5 minuti. Ma viene avviato dopo soli cinque secondi. E non import quale ora sto configurando con esso, innescherà sempre dopo 5 secondi. Ho usato lo stesso codice in Java e ho funzionato perfettamente.

Il codice:

  • API API IsConnected che restituisce TRUE dopo la firma
  • Come rilevare l'output di applicazione su android?
  • La differenza tra 'setExact' e 'setAlarmClock'
  • JNI Android - Convertire char * in byte arrays e restituirlo a java
  • Utilizzo di Boost in android ndk con windows
  • L'opzione più amichevole per il layout in android App
  •  [BroadcastReceiver] public class AlarmReceiver : BroadcastReceiver { public override void OnReceive(Context context, Intent intent) { Log.Info("AlarmReceiver", "Triggered"); } public static void Start(Context context, long triggerAfterMilis) { var type = AlarmType.RtcWakeup; var alarmManager = (AlarmManager) context.GetSystemService(Context.AlarmService); var timerIntent = PendingIntent.GetBroadcast(context, 0, new Intent(context, typeof(AlarmReceiver)), PendingIntentFlags.CancelCurrent); alarmManager.Cancel(timerIntent); if (Build.VERSION.SdkInt >= BuildVersionCodes.M) alarmManager.SetAndAllowWhileIdle(type, triggerAfterMilis, timerIntent); else if (Build.VERSION.SdkInt >= BuildVersionCodes.Lollipop) alarmManager.SetExact(type, triggerAfterMilis, timerIntent); else alarmManager.Set(type, triggerAfterMilis, timerIntent); Log.Info("AlarmReceiver", $"Started, tigger after {triggerAfterMilis} miliseconds."); } } 

    Come utilizzo l' AlarmReceiver :

     AlarmReceiver.Start(Activity,(long)TimeSpan.FromMinutes(10).TotalMilliseconds) 

    La window di output:

    14: 14: 20.217 5393-5393 / AlarmReceiver: ha iniziato, tigre dopo 600000 millisecondi. 14: 14: 25.218 5393-5393 / AlarmReceiver: Triggered

  • Problema di Alarm Manager in modalità Doze di Android 6.0
  • Come far funzionare Alarm Manager quando Android 6.0 in modalità Doze?
  • AlarmManager con fonegap
  • Come trasferire i dati da un BroadcastReceiver a un'attività che viene avviata?
  • Android rimuovendo l'allarme di prossimità
  • Android. Alarm Manager si accende in tempi strane
  • One Solution collect form web for “Issue di Xamarin Android Alarm Manager”

    Stai impostando il tempo per triggersre l'allarme in passato solo utilizzando il tempo di 10 minuti, il numero di millisecondi deve essere calcolato dall'inizio del 1970.

    Se il tempo di triggerszione dichiarato è in passato, l'allarme verrà triggersto immediatamente.

    Ottieni l'ora corrente e aggiungi il tempo.

     var TenMinsFromNow = Calendar.GetInstance(Android.Icu.Util.TimeZone.Default).TimeInMillis + TimeSpan.FromMinutes(10).TotalMilliseconds); 

    Ora corrente in millisecondi di "1970-01-01T00: 00: 00Z":

      Java.Lang.JavaSystem.CurrentTimeMillis(); 

    O:

      Calendar.GetInstance(Android.Icu.Util.TimeZone.Default).TimeInMillis; 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.