假设我有一个简单的日间计数应用程序,我有一个数字,并且每天数字都会增加1,并且当用户关闭该应用程序时,状态会保存。
我希望应用程序将数据存储在文件中,因此不包括数据库
答案 0 :(得分:3)
使用SharedPreference
保存当前日期,并计算变量,
每次应用检查天数差异并添加到计数变量中时,都会更新上述给定当前日期和变量中的SharedPreference
值
让我们说
保存在SharedPreference
count = system date - current date;
current date = system date;
说5天后打开应用程序
count = systemdate - current date (which was 18-08-2018);
current date = system date;
答案 1 :(得分:0)
如果您需要每天更新该数字(如果用户打开或不打开该应用,则可以这样做):
首次用户启动应用时,您会获得当前日期(例如,使用Joda-Time)
Datetime myTime = DateTime.now()
,然后将其存储在某个地方,例如SharedPreferences
或Room数据库。
然后,每次需要显示数字时,都会从存储它的位置(数据库或SharedPreferences)获取日期,并计算与当前日期的差,如下所示:
Days days = Days.daysBetween(myTime , DateTime.now());
int number = days.getDays();
答案 2 :(得分:0)
为了保持代码的简洁性,我使用了共享优先级来存储数据和毫秒(毫秒)作为日期。
int yourNumber = 0;
SharedPreferences save_data = getSharedPreferences("app", MODE_PRIVATE);
SharedPreferences.Editor save_edit = getSharedPreferences("app", MODE_PRIVATE).edit();
int days = save_data.getInt("days", -1);//Get Days from the preferences
if (days < yourNumber) {
//opened first time; no saved data found ;so save the initial data
save_edit.putLong("date", Calendar.getInstance().getTimeInMillis());
save_edit.putInt("days", yourNumber);
save_edit.commit();
} else {
//Already saved data found;
long oneDayInMilliSeconds = 86400000L;
long old_date = save_data.getLong("date", Calendar.getInstance().getTimeInMillis());
long current_date = Calendar.getInstance().getTimeInMillis();
long difference = (old_date + oneDayInMilliSeconds) - current_date;
if (difference > 0) {
//One Day Passed; Add One To previous Saved Days
save_edit.putInt("days", save_data.getInt("days", 0) + 1);//Get Days
save_edit.putLong("date", Calendar.getInstance().getTimeInMillis());//update the date
save_edit.commit();
}
}