android 手動設定時間 過期鬧鐘被觸發
最近在做鬧鐘的一個小程式,發現了一個問題。這個問題在網上都沒有找到合適的答案,最後還是在鬧鐘的原始碼裡面找到答案的。
相信很多人都和我一樣,都遇到了這樣的問題。
當你設定好鬧鐘以後,鬧鐘會準時觸發,然後會在標題欄頂部,彈出提示框,以表示鬧鐘被觸發了。
可是當我們手動設定手機系統的時間,把時間往後面調,會發現過期的鬧鐘也被觸 發了。這個卻不是我們想要的。我 以前的想法是監聽鬧鐘的TIME_SET時間,搶在系統觸發鬧鐘之前把我們設定的鬧鐘給取消掉,這樣就不會有過期的鬧鐘被觸發了。可惜,這樣是不行的。系統的鬧鐘還是被觸發了。頭痛不已。
後來,看了android自帶的原始碼之後,才煥然大悟阿,原來這麼簡單的問題被我搞的這麼的複雜。
主要的解決辦法就是:
手動設定時間以後,系統會觸發我們設定的鬧鐘,一般我們都是用receiver用作pendingintent的,我們只要在receiver裡面判斷一下當前時間和我們設定的這個鬧鐘的時間之間差值就可以解決這個問題了。如果差值過大,我們就不給出鬧鐘提示就可以了。
老覺得是系統錯了,其實和系統就沒有什麼關係。他要觸發你的鬧鐘就讓它觸發好了,只要你判斷一下當前時間,是不是你的鬧鐘被觸發的時間就可以了啊。如果是,那就給出鬧鐘提示,如果不是,當前時間和鬧鐘時間差很遠,那就不要給出鬧鐘提示就可以啊,就這麼簡單。真的和系統沒有什麼關係。