我正在开发一个计时器应用程序,可以在时间块(pomodoros)中工作,我想有一个变量来跟踪每天经过的块的数量,这样它就可以在当天保持计数,但第二天就会回到零。
我正在考虑通过在更新这个值时保存“最后记录的日期”来实现这一点,每次程序启动时,检查它不是当前日期并执行相应的操作。所以我有:
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();
}
}在程序开始时和用户退出首选项屏幕时调用。
它在第二种情况下工作得很好,但是如果我关闭应用程序/重启设备,它就不能工作,即使保存了其他首选项(我已经共享了未重置的自定义铃声的首选项)。
我做错了什么?
发布于 2013-05-18 06:52:55
也许你可以尝试为你的应用程序创建私人首选项,如下所示:
SharedPreferences sharedPrefs = getApplicationContext().getSharedPreferences("SOME_NAME",0);https://stackoverflow.com/questions/16618841
复制相似问题