我正在开发一个Android应用程序,我需要每个月做一些事情,因为该应用程序首次启动时启动,该应用程序将通知用户。我该如何只保留第一次约会?
我用过
Calendar calendar = Calendar.getInstance();
final int day = calendar.get(Calendar.DAY_OF_MONTH);
final int month = calendar.get(Calendar.MONTH);
Toast.makeText(getApplicationContext(), day + "\n" + month,
Toast.LENGTH_LONG).show();
但每次运行应用程序时都会更改。
任何更好的想法?
由于
答案 0 :(得分:0)
您可以使用SharedPreferences。它不允许您直接存储Date对象,但您可以存储一个long,您可以使用该long来保存date.getTime()值,该值表示自1970年1月1日00:00:00 GMT以来的毫秒数。
这是演示此内容的示例。
public class MyDateActivity extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";
public static final String PREFS_LONG_DATE_FIRST_RUN = "FirstRun";
private Date firstRunDate;
@Override
protected void onCreate(Bundle state){
super.onCreate(state);
// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
if (settings.contains(PREFS_LONG_DATE_FIRST_RUN)) {
// Found date in settings
long dateFirstRun = settings.getLong(PREFS_LONG_DATE_FIRST_RUN, 0);
firstRunDate = new Date(dateFirstRun);
} else {
// First time running
firstRunDate = new Date();
}
}
@Override
protected void onStop(){
super.onStop();
// Get preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
// Only write the first run date if settings don't contain a first run date.
if (!settings.contains(PREFS_LONG_DATE_FIRST_RUN)) {
SharedPreferences.Editor editor = settings.edit();
editor.putLong(PREFS_LONG_DATE_FIRST_RUN, new Date().getTime());
editor.apply();
}
}
}