1. 程式人生 > >android 手動設定時間 過期鬧鐘被觸發

android 手動設定時間 過期鬧鐘被觸發

   最近在做鬧鐘的一個小程式,發現了一個問題。這個問題在網上都沒有找到合適的答案,最後還是在鬧鐘的原始碼裡面找到答案的。
    相信很多人都和我一樣,都遇到了這樣的問題。
    當你設定好鬧鐘以後,鬧鐘會準時觸發,然後會在標題欄頂部,彈出提示框,以表示鬧鐘被觸發了。
    可是當我們手動設定手機系統的時間,把時間往後面調,會發現過期的鬧鐘也被觸 發了。這個卻不是我們想要的。我 以前的想法是監聽鬧鐘的TIME_SET時間,搶在系統觸發鬧鐘之前把我們設定的鬧鐘給取消掉,這樣就不會有過期的鬧鐘被觸發了。可惜,這樣是不行的。系統的鬧鐘還是被觸發了。頭痛不已。
後來,看了android自帶的原始碼之後,才煥然大悟阿,原來這麼簡單的問題被我搞的這麼的複雜。

    主要的解決辦法就是:
    手動設定時間以後,系統會觸發我們設定的鬧鐘,一般我們都是用receiver用作pendingintent的,我們只要在receiver裡面判斷一下當前時間和我們設定的這個鬧鐘的時間之間差值就可以解決這個問題了。如果差值過大,我們就不給出鬧鐘提示就可以了。

    老覺得是系統錯了,其實和系統就沒有什麼關係。他要觸發你的鬧鐘就讓它觸發好了,只要你判斷一下當前時間,是不是你的鬧鐘被觸發的時間就可以了啊。如果是,那就給出鬧鐘提示,如果不是,當前時間和鬧鐘時間差很遠,那就不要給出鬧鐘提示就可以啊,就這麼簡單。真的和系統沒有什麼關係。

相關推薦

android 手動設定時間 過期鬧鐘觸發

   最近在做鬧鐘的一個小程式,發現了一個問題。這個問題在網上都沒有找到合適的答案,最後還是在鬧鐘的原始碼裡面找到答案的。     相信很多人都和我一樣,都遇到了這樣的問題。     當你設定好鬧鐘以後,鬧鐘會準時觸發,然後會在標題欄頂部,彈出提示框,以表示鬧鐘被觸發了。

android AlarmManager 設定時間小於當前時間,立即觸發廣播解決方案

        最近在做一個基於android作業系統的鬧鐘小程式,在網上找尋了很多資料,根據這些資料試著編寫,但是在測試的時候遇到了如下一個問題:         比如現在的時間是7:00,我設定鬧鐘為6:00,則鬧鐘馬上會啟動。但是如果設定為8:00,則鬧鐘不會立即啟動而是在8:00準時啟動。被這個

Android 同時設定多個鬧鐘

PendingIntent pendingIntent = PendingIntent.getBroadcast(this, id,intent, 0); Android在同時設定多個鬧鐘時,penddingintent第二個引數id一定要設定為不同的id,如果設定為同一個

Hessian遠端呼叫介面設定時間過期問題

一、背景描述:在專案中,專案模組分客戶端,服務端兩部分。使用Hessian作為RPC呼叫介面技術。如果系統初始化過程中,Hessian介面提供方呼叫介面返回資料時間太長,或者直接服務沒啟動,將導致介面呼叫方無法正常啟動(等待時間過長)。而這部分的介面資料,我又是不太在意的內容

JavaWeb中Session手動設定過期時間的三個方法 簡單易用

  注意!   由於伺服器記憶體資源很寶貴 儲存session至伺服器硬碟需謹慎  ;  = =| !!  開發都是範圍越小,優先順序越高,所以這仨的配置應用的優先順序 分別 逐個降低 ,程式碼中配置的為優先應用,其次才是Web程式中的web.xml檔案,最後才是 To

python設定redis過期時間

import time import redis if __name__ == "__main__": try: conn=redis.StrictRedis(host='192.168.80.41') conn.set('name','蔣樂哥哥') conn.expire('name',10) #設定鍵的

如何給localStorage設定一個過期時間

原文:如何給localStorage設定一個過期時間? 作者:蘇南 - 首席填坑官 公眾號:IT平頭哥聯盟 Fundebug經授權轉載,版權歸原作者所有。 引言 這個話題其實在上次分享<小程式填坑記裡講過了>已經講過(大佬可繞過哦~),但後來群裡/評

javascript新增、讀取、刪除cookie,判斷cookie是否有效,指定domain域下主路徑path下設定cookie,設定expires過期時間

有時我們需要用cookie儲存使用者名稱,記錄登入狀態,如何正確判斷該機使用者cookie是否存在呢?不能簡單使用a!=”這樣的寫法。 正確方法是:判斷是否存在名為username3的cookie,使用document.cookie.indexOf(“username3=”)來判斷,如果返回值是

android日期時間選擇,有多少天?多少年?以及設定時間選擇範圍(即最大值和最小值)

DatePickerDialog.OnDateSetListener bbrContactsBirthDateListener = new DatePickerDialog.OnDateSetListener() { @Override public void on

DateTimeField如何自動設定為當前時間並且能修改 ——django日期時間欄位的使用

  參考於:https://www.cnblogs.com/huchong/p/7895263.html   建立django的model時,有DateTimeField、DateField和TimeField三種類型可以用來建立日期欄位,其值分別對應著datetime()、date

android retrofit設定網路請求超時時間

今天開發的時候遇到一個網路請求超時的問題,後臺處理是成功的,但是移動端返回的總是提示請求超時,在設定了retrofit請求超時的時間延長以後,就可以請求成功了,下面是配置的方法: private static final OkHttpClient client =

redis設定key過期時間

redis是一個廣泛應用的key-value型記憶體資料庫,和memecached一樣,key是可以被設定生存週期的。 redis設定key的過期時間非常簡單: SETEX mykey 10 "Hello" 這樣就給mykey設定了10秒的生存週期。 但是當你使用了red

Android原生的時間選擇器——設定最低選擇年限

通過時間選擇器原始碼可以看到,如果不做任何設定,那麼最低許可權年是1900年,有的時候我們想設定自己的最低年限,比如說,設定最低時間為2000-01-01,程式碼如下: datePickerDialog.getDatePicker().setMinDate(),這個

redis有效時間設定時間過期處理

有效時間設定 Redis對儲存值的過期處理實際上是針對該值的鍵key處理的,即時間的設定也是設定key的有效時間。Expires字典儲存了所有鍵的過期時間,Expires也稱為過期欄位。 四種處理策略: (1)EXPIRE將key的生存時間設定為ttl 秒。 (2)P

設定localStorage過期時間

/** * [以秒做單位, 設定localStorage過期時間] */ var localStorageUtil = { set(key, val, expire){ var exp = expire ? Date.n

解決【應用程式已安全設定阻止】彈出框的手動設定方法

在包含Applet標籤的頁面,執行中較高的jdk版本(例如jdk1.7或jdk1.8),會彈出【應用程式已被安全設定阻止】的安全警告框(如下圖),這是由於oracle在jdk1.7(主要涉及到jdk7u21, jdk7u45, jdk7u51版本)中引入了對java瀏覽器外

django 設定session過期時間

session的超時時間設定settings中SESSION_COOKIE_AGE=60*30 30分鐘。SESSION_EXPIRE_AT_BROWSER_CLOSE False:會話cookie可以在使用者瀏覽器中保持有效期。True:關閉瀏覽器,則Cookie失效。S

為什麼要設定session過期時間

 1)節省伺服器資源:使用者可能已經關閉了瀏覽器,而沒有通過“登出”按鈕,這就導致服 務器不知道使用者已經不再使用系統了,這時候如果此使用者的相關session仍然存在,就沒有必要了。所以需要設定過期時間  2)安全:使用者長時間未操作,可能已經離開電腦做別的去了,這時候如

如何給local Storage設定一個過期時間

Fundebug經授權轉載,版權歸原作者所有。 引言 這個話題其實在上次分享<小程式填坑記裡講過了>已經講過(大佬可繞過哦~),但後來群裡/評論都有些同學,提到了一些疑問,問能否單獨整理一篇更為詳細的分享,講解一下細節和完善提到的不足,如是有了下文

Android設定Activity永不過期,銷燬

保持Activity永不銷燬…… import android.os.Bundle; import android.app.Activity; import android.util.Log;