注册应用程序启动的第一个日期

时间:2014-11-21 23:24:36

标签: android date sharedpreferences alarmmanager

我正在开发一个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();

但每次运行应用程序时都会更改。

任何更好的想法?

由于

1 个答案:

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