我是Android编程新手,面临的挑战可能会在这个论坛上在几秒钟内解决。
我试图找出如何在启动期间启用应用程序,以检测自上次启动以来日期是否已更改。
当日期发生变化时,我打算更改textview中的值。但是如果没有,则textview不会改变。 - 我知道如何创建此功能,但是却遇到了日期更改问题?
我已经阅读过alarmmanager但是不确定这是必需的,因为它不需要在启动时的特定时间发生。
任何建议都将不胜感激。
谢谢,
p.s我正在创建一个基本的报价应用程序,并希望包含当天页面的引用。为了做到这一点,我需要知道日期是否已经改变,以便应用程序更改报价
答案 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
}
}