手機鬧鐘原理是怎麼樣的?

時間 2021-05-06 04:16:51

1樓:SunnyZhou

不是輪詢,在Android中,你新增乙個鬧鐘之後,安卓自帶的鬧鐘程式會將你建立的鬧鐘先放到自己的Content Provider中,並且找到最近一次將要觸發的鬧鐘,將它註冊到Android系統中。

在Android5.0以及之後,鬧鐘程式會將鬧鐘例項放在的AlarmManager中,這個AM就會幫你照顧好它,當時間到了該鬧鐘需要觸發的時刻,系統便會傳送乙個廣播,這個廣播會攜帶這你之前註冊的Intent,鬧鐘程式收到這個廣播之後,就會啟動乙個後台Service,service就會根據intent的內容觸發鬧鐘,進行響鈴、震動等操作。

if (nextAlarm != nullLogUtils.i("Setting upcoming AlarmClockInfo for alarm:

" + nextAlarm.mIdlong alarmTime = nextAlarm.getAlarmTime().

getTimeInMillisCreate an intent that can be used to show or edit details of the next alarmPendingIntent viewIntent = PendingIntent.getActivity(context, nextAlarm.hashCodeAlarmNotifications.

createViewAlarmIntent(context, nextAlarmPendingIntent.FLAG_UPDATE_CURRENTfinal AlarmClockInfo info = new AlarmClockInfo(alarmTime, viewIntentUtils.updateNextAlarm(alarmManager, info, operationelse if (operation !

= nullLogUtils.i("Canceling upcoming AlarmClockInfo"alarmManager.cancel(operationpublic static void updateNextAlarm(AlarmManager am, AlarmClockInfo info, PendingIntent opam.

setAlarmClock(info, op);

}在5.0之前,會將最近的鬧鐘儲存到系統的Setting維護的乙個資料庫中。

最後,安卓系統都會設定硬體RTC,時間一到便會觸發。

例如你關機之後,時間一到,便會觸發系統啟動,啟動完成後系統會廣播系統啟動完成,鬧鐘程式收到廣播後便會從資料庫中讀取之前儲存的鬧鐘資料,進行觸發。

2樓:呵呵一笑百媚生

從演算法的角度,使用最小堆,10000個鬧鐘的檢查耗時不會比1個鬧鐘的檢查耗時多。

另外,作業系統執行緒一般都支援sleep操作,休眠指定時長,而且像linux作業系統還支援定時訊號SIGALRM。所以兩個小時內不用每秒檢查一次,直接休眠兩小時然後觸發提醒行了。

3樓:Micky

補充一下

之前想要精確計時,都是要靠複雜而精密的機械結構的,機械表中製造工藝的最高水平就是,陀飛輪

直到後來發現了石英晶體的壓電效應,簡單說就是在加電狀態下,石英晶體每秒穩定震動32768次,並且不受氣壓氣溫濕度磁場等環境因素影響,且誤差極小,成本還低。。。

後來日本人把石英鐘發揚光大,還記得我們小時候,誰要是戴了塊電子錶,那就是同學裡的高富帥,成本三五塊,賣價兩三百。那時候我爸我媽工資還不到一千

那段時間歐洲傳統錶業被日本揍得一蹶不振,機械表相比電子錶沒任何優勢,我爺爺有塊老上海,表盤大得頂我兩個腕子都粗,每天都得上弦,不能沾水,不能沾磁,還走不准。。。

然後歐洲人想通了,我不跟你日本人比科技了,我們賣的是情懷、是品味,所以你看現在的機械表廣告,都是乙個頭髮花白的老表匠,眼睛上戴著顯微鏡,用精緻的手動表車在磨齒輪。。。

哥們兒有塊5萬多塊的鎢鋼機械表,擼串時候跟我們顯擺,確實漂亮,據說行貨要十多萬,跟金主兒談事兒時候用的,就是麻煩,每天得上弦,不能磕碰

我說我不懂你那個,你看我這塊Casio電波,3000多塊,陪我上過山下過海環過湖,四年沒換過電池照樣比你那走得準

4樓:墨之煙雨

RTC,實時時鐘

從硬體來看,裡面有個16位暫存器,由乙個32.768kHz的晶振提供時序,每32768(2^15)個振盪週期後,最高位置1並輸出高電平,16位暫存器復位

輸出高電平到另乙個32位時間暫存器作為1s時序,當另乙個暫存器的預置鬧鐘數值通過比較器與時間暫存器相等時,輸出中斷,CPU處理中斷並鬧鈴

至於多個嘛,自己編個程式排個序處理完乙個再送乙個進去emmm,大致原理就是這樣,有不準確的地方,勿噴

5樓:threedr3am

我說乙個很簡單的實現吧。就算鬧鐘每秒檢測一次,對於手機來說,這樣的計算並沒有多大影響,況且我們只要把有鬧鐘的那個時間戳和鬧鐘ids以乙個key,value的方式快取在記憶體中,不直接走資料庫,到點了檢查一下有沒有鬧鐘,把ids取出來,後續如何操作就看你自己的邏輯了。

膨脹螺絲的工作原理和構造是怎麼樣的?

方盛雲採 建議先讚,後看,便於以後檢視。膨脹螺絲,生活中處處可見,主要在各種裝修中起著連線 固定的作用。接下來給大家介紹一下膨脹螺絲的構成和工作原理。固定原理 膨脹螺絲之固定乃是利用挈形斜度來促使膨脹產生摩擦握裹力,達到固定效果。螺釘一頭是螺紋,一頭有椎度。外麵包一鋼皮,鐵皮圓筒一半有若干切口,把它...

照相排字(寫真植字)的工作原理是怎麼樣的?

御柳玄 日文寫真植字機是1924年由石井茂吉與森澤信夫兩人共同發明的。寫真植字機,基本的工作原理,是把跟活字母型相配的文字盤上的字,通過攝影感光的方式,印到感光材料上,達到印刷製版的目的。1967年,morisawa發布了手動寫植機MC 6,它是MC系列裡的集大成作品,流行一時。如圖所示 下圖就是採...

引起雄脫的原理到底是怎麼樣的?

尹梓貽 這個也不是這麼絕對的,雄脫也不都是遺傳,如果只是遺傳,那總得有個源頭,那源頭是怎麼來的?科學家的解釋是基因突變。說起這個基因突變啊,也不要想得多神秘多高大上,不是只有變成蜘蛛俠才是基因突變,你和你爸媽長得不一樣這也是基因突變。基因突變是進化的基礎。抱著這樣的心態,我們比較容易接受。大家也都知...