2014-11-21 68 views
0

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

既然您将此标记为“sharedpreferences”,那么您肯定知道Preferences API,这是存储“第一个日期”的好选择吗? http://developer.android.com/reference/android/preference/Preference.html – bzlm 2014-11-21 23:30:41

+0

将其存储在sharedpreferences中。当应用程序打开时,它应该查找日期,如果它不在那里,可能是它第一次在该设备上打开。 – Dyrborg 2014-11-21 23:38:21

+0

您需要将其存储在用户无法拥有权限的地方......拥有共享的首选项和内部数据,用户对此有权限,并且可以绕过您...使用在线数据库.. – Elltz 2014-11-21 23:40:53

回答

0

您可以使用SharedPreferences。它不会允许您直接存储Date对象,但是您可以存储一个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(); 
     } 
    } 
} 
相关问题