2013-05-17 6 views
0

Je développe une application de minuterie qui fonctionne en bloc de temps (pomodoros) et je voudrais avoir une variable qui garde la trace du nombre de blocs passés tous les jours, de sorte qu'il ne cesse de compter dans le le même jour mais revient à zéro le lendemain. Je pensais mettre en œuvre ceci en sauvegardant le "dernier jour enregistré" lors de la mise à jour de cette valeur, et chaque fois que le programme démarre, vérifiez-le par rapport à la date actuelle et agissez en conséquence. J'ai donc:Android, réinitialiser une valeur tous les jours

public void saveDailyPomodoros() { 
    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
    int currentDay = Calendar.getInstance().get(Calendar.DAY_OF_YEAR); 
    sharedPrefs.edit().putInt("dailyPomodoros", dailyPomodoros).commit(); 
    sharedPrefs.edit().putInt("lastRecordedDay", currentDay).commit(); 
    showDailyPomodoros.setText(String.valueOf(dailyPomodoros)); 
} 

qui enregistre la valeur (je l'appelle cette fonction lorsque je change), et

public void updateSettings() { 
    SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this); 
    ... 

    int currentDay = Calendar.getInstance().get(Calendar.DAY_OF_YEAR); 
    int lastRecordedDay = sharedPrefs.getInt("lastRecordedDay", 0); 
    if (currentDay != lastRecordedDay) { 
     dailyPomodoros = 0; 
     saveDailyPomodoros(); 
    } 
} 

qui est appelé au début du programme et lorsque l'utilisateur quitte la préférence écran. Cela fonctionne très bien dans ce second cas, mais si je tue le périphérique app/reboot, cela ne fonctionne pas, même si les autres préférences sont sauvegardées (j'ai des préférences partagées pour les sonneries personnalisées qui ne sont pas réinitialisées).

Qu'est-ce que je fais mal?

+0

Il pourrait être que votre préférence est partagée obtenir enregistrée avec un 'null' après la force de fermeture/redémarrage. –

Répondre

0

Peut-être que vous pouvez essayer de créer des préférences privées pour votre application comme ceci:

SharedPreferences sharedPrefs = getApplicationContext().getSharedPreferences("SOME_NAME",0); 
Questions connexes