1

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

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

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

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

任何建议将不胜感激。

谢谢,

ps 我正在创建一个基本的报价应用程序,并希望包含当天页面的报价。为此,我需要知道日期是否已更改,以便应用程序更改报价

4

2 回答 2

5

您将需要的是:
一个SharedPreference描述最后日期的长值。
一个Calendar

当您的 Activity 开始时(在onCreate()Method 中似乎是这样做的好地方),您可以获得一个新的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();
}
于 2012-04-12T15:06:38.437 回答
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
    }
}
于 2012-04-12T15:02:41.510 回答