2010-12-17 69 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