2016-03-12 27 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

相关问题