2016-03-12 31 views
2
第二天

我想要做這樣的事情:運行的方法,如果日期是

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity); 

int i = (int) (new Date().getTime()/1000); 

    if( ) // next day 
    { 
     mymethod(); 
    } 
} 

當系統日期是新的一天,那麼我想打電話給mymethod()

+0

新的一天在對比的是什麼?如果相隔一天,您需要參考另一個日期進行比較。 – chRyNaN

+0

這可能很難 – Kamil

+0

完全沒有。將值存儲在SharedPreferences中。然後在需要時檢索它,並且有條件確定它是否在一天之後。 – chRyNaN

回答

0

隨着新的一天你在午夜後是什麼意思?所以你想檢測日期是否與上次不同?

@Override 
    protected void onResume() { 
    SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this); 
    int lastTimeStarted = settings.getInt("last_time_started", -1); 
    Calendar calendar = Calendar.getInstance(); 
    int today = calendar.get(Calendar.DAY_OF_YEAR); 

    if (today != lastTimeStarted) { 
     //startSomethingOnce(); 

     SharedPreferences.Editor editor = settings.edit(); 
     editor.putInt("last_time_started", today); 
     editor.commit(); 
    } 
    } 
+0

例如 \t 如果時間是00:01 //開始新的一天{my mythod做某事時,我打開活動} – Kamil

+0

但我也想誘導mymethod ()只需一次 – Kamil

+0

然後,您只需要Calendar.DAY_OF_YEAR,今天是2016年的73天,並且在午夜之後保持不變,在午夜之後它將是74天,這就是您的應用程序將啓動mymethod()的時間。該方法每天至多被調用一次。 –

0

建議使用Calendar類而不是Date。你可以檢查一天是否像這樣通過:

  1. 在某些事件上,例如,點擊按鈕,應用程序首次啓動時,保存在sharedPreferences時間
  2. 檢索該值,並將它與當前時間 剛上如何做到這一點的說明:

    protected void onCreate(Bundle savedInstanceState){ 
    
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity); 
    
        Calendar c = Calendar.getInstance(); 
        int currentTimeSeconds = c.get(Calendar.SECOND); 
    
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
        int secondsPreviousDay = prefs.getInt("seconds", 0); 
        if (secondsPreviousDay != 0){ //means there was an earlier set value from previously entering the activity 
         //compare if more than 3600*24 = 86400 (1 day in seconds) had passed 
         if (currentTimeSeconds - secondsPreviousDay > 86400){ 
          mymethod(); 
         } 
        } 
        else { 
         prefs.edit().putInt("seconds", currentTimeSeconds).apply(); 
        } 
    } 
    

在我的代碼假設你想看看從第一次開始這個活動到第二次是否有一天過去了。你可以根據自己的喜好調整它,但我希望這個想法是可以理解的。

我知道我可以壓縮那些2如果是一個,但我只是想讓它更清楚我以後是什麼。

+0

好,然後只要把增加任何你喜歡的喜歡和檢索別的地方,在我的代碼中的值進行比較,以當前時間像sharedPreferences。 。 你還有別的問題嗎? – Vucko

+0

我的方法只會導致一天中的一次,而不是一次又一次的正確? – Kamil

+0

爲此:只需添加一個小東西,或者在每次觸發方法時將新時間寫入SharedPreferences,或者保存某種日計數器和指示事件是否已在當天開啓的指示符。 – Vucko

0

好主意!

在我的第一個活動我設置這樣的事情裏面的onCreate:

Calendar c = Calendar.getInstance(); 
    int currentTimeSeconds = c.get(Calendar.SECOND); 
    SharedPreferences share = PreferenceManager.getDefaultSharedPreferences(this); 
    SharedPreferences.Editor edittime = share.edit(); 
    edittime.putInt("timevalue",currentTimeSeconds); 
    edittime.commit(); 

,並使用你的代碼裏面的onCreate另一項活動:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 
    int secondsPreviousDay = prefs.getInt("seconds", 0); 
    if (secondsPreviousDay != 0){ //means there was an earlier set value from previously entering the activity 
     //compare if more than 3600*24 = 86400 (1 day in seconds) had passed 
     if (currentTimeSeconds - secondsPreviousDay > 86400){ 
      // mymethod(); 
      mymethod(); 

     } 
    } 
    else { 
     prefs.edit().putInt("seconds", currentTimeSeconds).apply(); 
    } 
} 

,我感到抱歉,但我還在學習

+0

我做錯了什麼? – Kamil

+0

您正在使用兩種不同的SharedPreferences,請看: – Vucko

+0

SharedPreferences share = getSharedPreferences(「TIME」,MODE_PRIVATE); 和 SharedPreferences首選項= PreferenceManager。getDefaultSharedPreferences(本); 你需要它是相同的SharedPreferences。 – Vucko

相關問題