我正在开发一个在时间块(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();
}
}
在程序开始时和用户退出首选项屏幕时调用。
它在第二种情况下工作正常,但是如果我杀了app / reboot设备它就不起作用,即使正在保存其他首选项(我已经获得了未重置的自定义铃声的共享首选项)。 / p>
我做错了什么?
答案 0 :(得分:0)
也许您可以尝试为您的应用创建私人偏好设置:
SharedPreferences sharedPrefs = getApplicationContext().getSharedPreferences("SOME_NAME",0);