我正在开发一个计时器应用程序,它可以按时间块(番茄钟)工作,我希望有一个变量来跟踪每天通过的块数,所以它会在同一天继续计数,但当天回到零后。
我正在考虑通过在更新此值时保存“最后记录的日期”来实现这一点,并且每次程序启动时,检查它是否与当前日期相匹配并采取相应措施。所以我有:
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));
}
它保存了值(我在更改它时调用了这个函数),并且
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();
}
}
这在程序开始时和用户退出首选项屏幕时调用。
它在第二种情况下工作正常,但是如果我终止应用程序/重新启动设备,它就不起作用,即使正在保存其他首选项(我有未重置的自定义铃声的共享首选项)。
我究竟做错了什么?