应用程序启动时的日期更改检测 - Android

时间:2012-04-12 14:57:32

标签: android date android-intent alarmmanager

我是Android编程新手,面临的挑战可能会在这个论坛上在几秒钟内解决。

我试图找出如何在启动期间启用应用程序,以检测自上次启动以来日期是否已更改。

当日期发生变化时,我打算更改textview中的值。但是如果没有,则textview不会改变。 - 我知道如何创建此功能,但是却遇到了日期更改问题?

我已经阅读过alarmmanager但是不确定这是必需的,因为它不需要在启动时的特定时间发生。

任何建议都将不胜感激。

谢谢,

p.s我正在创建一个基本的报价应用程序,并希望包含当天页面的引用。为了做到这一点,我需要知道日期是否已经改变,以便应用程序更改报价

2 个答案:

答案 0 :(得分:5)

你需要的是:
一个SharedPreference,其中包含描述最后日期的长值 一个Calendar

当您的活动开始时(在onCreate()方法中,这似乎是个好地方),您可以获得新的Calendar。它将具有当前日期,您可以提取当天:

Calendar c = Calendar.getInstance();
int thisDay = c.get(Calendar.DAY_OF_YEAR); //You can chose something else to compare too, such as DATE..
long todayMillis = c.getTimeInMillis(); //We might need this a bit later.

然后您从上次读取可能保存的值并将日历设置为此值,然后将其与今天进行比较:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
long last = prefs.getLong("date", 0); //If we don't have a saved value, use 0.
c.setTimeInMillis(last);
int lastDay = c.get(Calendar.DAY_OF_YEAR);

if( last==0 || lastDay != thisDay ){
    //New day, update TextView and preference:
    SharedPreferences.Editor edit = prefs.edit();
    edit.putLong("date", todayMillis);
    edit.commit();
}

答案 1 :(得分:0)

应用程序启动时执行此操作:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this)

if (prefs.getBoolean("firstLaunch", true))
{
    SharedPreferences.Editor editor = prefs.edit();
    editor.putBoolean("firstLaunch", false);
    editor.putInt("date", new Date().getTime());
    editor.commit();
}
else
{
    if (new Date().getTime() != prefs.getInt("date", 0))
    {
            // Do something
    }
}