2016-10-19 5 views
0

ich versuche, 2 Aufgaben zu planen, die erste Notwendigkeit, jeden Tag zu tun - um Geburtstage zu überprüfen, muss die zweite Aufgabe nur sein, wenn heute der erste Tag des Monats ist ..Ich muss 2 Aufgaben zu unterschiedlichen Zeiten planen

Ich habe versucht, 1 Zeitplan zu machen, der jeden Tag um 8:00 Uhr gemacht wird, und wenn es fertig ist, um zu überprüfen, ob es der erste Tag des Monats ist.

wenn es wahr ist, machen Sie die Methode der zweiten Aufgabe.

Mein Problem ist, dass die Methode jedes Mal startet, wenn onCreate() & es der erste Tag t der Monat ist, also wenn ich die App 10 Mal am 1/10/16 öffne, wird die Methode 10 Mal passieren, anstatt 1 mal.

mein Code:

onCreate()

startTimers(); 

startTimers Methode:

private void startTimers() { 

    d = new Date(); 
    d.setTime(System.currentTimeMillis()); 
    d.setHours(8); 
    d.setMinutes(0); 
    d.setSeconds(0); 

    timer = new Timer(); 
    timerTask = new TimerTask() { 
     @Override 
     public void run() { 

      if(d.getDate() == 1){ 
       // TODO: 19/10/2016 find good if that will make it work only 1 time per month.. 
       saveSalariesBeforeStartNewMonth(); 
       resetSumOfMinutes(); 
       Log.d("TAG","Started new Month good [email protected]#[email protected]"); 
      } 
      checkBirthdays(); 
     } 
    }; 

    timer.schedule(timerTask,d.getTime(),1000*60*60*24);//every day at 8:00 at morining.. 
} 

Dank für die Helfer.

Antwort

0

Versuchen Sie, nach erfolgreicher Planung einen einfachen booleschen Wert in SharedPreferences zu speichern, so dass Sie vor dem Aufruf startTimers() nur den gespeicherten Wert überprüfen. Sth wie:

public void onCreate(){ 
    if (!isScheduledAlready()) { 
    startTimers(); 
    } 
} 

public boolean isScheduledAlready(){ 
    SharedPreferences prefs = getPrefs().getPreferences(); 
    return prefs.getBoolean("schedule_keys", false); 
} 

public void setSchedule(boolean scheduled) { 
    SharedPreferences prefs = getPrefs().getPreferences(); 
    prefs.edit().putBoolean("schedule_keys", scheduled).apply(); 
} 

Auch wenn ich bin nicht sicher, in Ihrer Situation, die Sie könnte den Wert, wenn der Monat Änderung optimieren will? Wenn du dann nur ein paar mehr Bedingungen hinzufügen musst, denke ich.

+0

hey, mein Punkt ist, dass wenn startTimers aktivierte die Timer nicht funktioniert .. ich ändere die Zeit auf meinem Handy und nichts hängt an, wenn ich bis 8:00 Uhr ankommen .. –

Verwandte Themen