2014-11-21 65 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(); 
     } 
    } 
} 
相關問題