2010-12-17 67 views
0

是否可以观察日期(例如,像ContentObserver一样),以便每次日期更改(由于时间流逝或用户手动更改),某些代码得到执行?观察日期android

编辑:
之所以我需要这个是这样的:我有它由光标支持的列表。游标是包含谓词date >= strftime('%Y-%m-%d','now')的SQLite语句的结果。所以如果日期改变了,一些列表项必须从列表中移除(在光标上调用requery()后显然会发生)。

+0

日期不断变化......现在不存在现在时间等于现在+任何增量的情况。 – Falmarri 2010-12-17 20:39:48

回答

1

只要您的应用程序恢复重新查询?这将确保它始终与当前日期查询,因为它们不会暂停您的应用程序而更改日期。另外要注意的是,这看起来像是一个真正的边缘案例。用户多长时间手动更改日期(而不仅仅是一天的时间,因为您只是比较m,d,y)?

1

我会推荐使用Timer类。

一旦应用程序启动, 1)计算到第二天休眠所需的时间。
2)启动一个定时器,当时“唤醒”,
3)一旦定时器结束,启动另一个定时器唤醒24小时后
4)执行你想运行的代码。
5)重复步骤3.

+0

我也考虑过类似的方法(但使用Android的Handler-Class)。问题是:如果用户更改日期,会发生什么情况?另一个问题是,当时间与时间服务器同步时,线程可能会很早起床(对于我的情况来说,太晚会比为时过早)。 – Tom 2010-12-17 14:47:44

+0

您可以使用更多的策略,但这一切都取决于您需要这样做的时间与午夜有多接近。在这个问题中,你能扩展你的需求吗?这是严格的,日期已经改变......你试图完成什么?也许听日期改变不是正确的事情... – 2010-12-17 16:35:46

+0

我编辑了我的问题,并解释了为什么我需要这个。 – Tom 2010-12-17 18:31:03