2016-04-03 18 views
0

Ich erstelle einen Alarm Manager in OnCreate einer Aktivität, die nach 2 Stunden ausgeführt werden sollte, aber es läuft nach ein paar Minuten kann jemand helfen, was ich tun kann, ist falsch? Android: Alarm Manager Fehlzündungen

public class DrawerActivity extends AppCompatActivity { 

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_drawer_menu); 
     ButterKnife.bind(this); 
setUpFitnessAlarm(); 

} 

} 

private void setUpFitnessAlarm(){ 
     Intent alarmIntent = new Intent(DrawerActivity.this, GoogleFitAutoStart.class); 
     pendingIntent = PendingIntent.getBroadcast(DrawerActivity.this, 0, alarmIntent, 0); 


     int wkupTime; 

      wkupTime =72000; 
      Log.i(TAG,"Default timer fetch : "+wkupTime); 



     manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), wkupTime, pendingIntent); 


    } 

Antwort

1

Der dritte Parameter von AlarmManager.setInexactRepeating(...) ist in Millisekunden, nicht Sekunden. Die korrekte Nummer wäre 2 * 60 * 60 * 1000 = 7200000.

Denken Sie auch daran, dass es wahrscheinlich nicht genau 2 Stunden sein wird, denn Android gruppiert Alarme zusammen, um Energie zu sparen (Doze). Es könnte 2 Stunden und 2 Minuten oder 1 Stunde und 59 Minuten sein. Wenn Sie genau 2 Stunden haben möchten, verwenden Sie setExact(...), aber verwenden Sie diese nur, wenn sie wirklich benötigt werden.

+0

Vielen Dank für das Hinweis auf den letzten Parameter ist Millisekunden Mein schlechtes habe ich verpasst. – Sutirth