我正在处理的应用程序是让用户每天只参与一次,所以代码的第一行是
if(datar.equals("-1")){
anim(se);
}
这意味着如果用户第一次打开应用程序我的主要功能anim(se)应该工作,之后变量数据将会改变,我会在每次用户打开应用程序时读取它,所以我想添加第二个部分到if语句检查自上次用户尝试该函数后24小时是否已经传递动画(se)我想要的是那样的东西
if(datar.equals("-1")){
anim(se);
}
else
{
if( "current date"-"last time the user use anim(se)">="24h")
anim(se);
else
"the user still have to wait"
}
这样做我试图在动画(se)中保存日期
SimpleDateFormat formatter = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
Calendar last = Calendar.getInstance();
String dt = formatter.format(last);
try {
FileOutputStream outputStream = openFileOutput("data", Context.MODE_PRIVATE);
outputStream.write(dt.getBytes());
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
但我在这里有一个问题,应用程序力量cloce ..:3
我确信阅读日期的其余代码并将其与当前日期进行比较也是错误的!
Calendar now,last = Calendar.getInstance();
String dt="";
try {
FileInputStream inputStream = openFileInput("date");
BufferedReader r = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder total = new StringBuilder();
String line;
while ((line = r.readLine()) != null) {
total.append(line);
}
r.close();
inputStream.close();
dt = total.toString();
} catch (Exception e) {
e.printStackTrace();
}
java.util.Date lasta = null;
try {
lasta = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss").parse(dt);
} catch (ParseException e) {
e.printStackTrace();
}
last.setTime(lasta);
long diff = now.getTimeInMillis() - last.getTimeInMillis();
if(datar.equals("-1")){
anim(se);
}else
{
if(diff>7200)
anim(se);
}
任何想法怎么做:)?
答案 0 :(得分:1)
只需使用SharedPreferences。您不需要单独的文件来存储此信息。
SharedPreferences pref = getApplicationContext().getSharedPreferences("pref_name", MODE_PRIVATE);
Editor editor = pref.edit();
editor.putString("time", "put_your_time_here");
editor.commit();
答案 1 :(得分:0)
试试这些:其中prefs是你的sharedpreferences对象,而不是boolean你传递给他一个字符串有值
private void savePreferences(String key, boolean value) {
prefs = PreferenceManager.getDefaultSharedPreferences(this);
Editor editor = prefs.edit();
editor.putBoolean(key, value);
editor.commit();
}
private boolean loadSavedPreferences() {
prefs = PreferenceManager.getDefaultSharedPreferences(this);
return prefs.getBoolean("hasDataToSync", false);
}