0

我正在开发一个计时器应用程序,它可以按时间块(番茄钟)工作,我希望有一个变量来跟踪每天通过的块数,所以它会在同一天继续计数,但当天回到零后。

我正在考虑通过在更新此值时保存“最后记录的日期”来实现这一点,并且每次程序启动时,检查它是否与当前日期相匹配并采取相应措施。所以我有:

    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();
    }
}

这在程序开始时和用户退出首选项屏幕时调用。

它在第二种情况下工作正常,但是如果我终止应用程序/重新启动设备,它就不起作用,即使正在保存其他首选项(我有未重置的自定义铃声的共享首选项)。

我究竟做错了什么?

4

1 回答 1

0

也许您可以尝试为您的应用创建私人偏好,如下所示:

SharedPreferences sharedPrefs = getApplicationContext().getSharedPreferences("SOME_NAME",0);
于 2013-05-17T22:52:55.037 回答