手機休眠被喚醒後timer還繼續執行嗎

2021-07-25 15:46:34 字數 1914 閱讀 1690

**:

前段時間在工作的時候碰見乙個問題,就是要待機時在設定的時間內執行操作,開始並沒有意識到問題的嚴重,後來嘗試很多辦法沒有成功,最後也是在網上找到解決辦法,在此稍作總結,希望能對大家有所幫助,不足之處還望大家指正。

1android中的handler、timer、thread、在待機時都會停止執行,所設定的時間會在待機結束後繼續計算。所以如果想在android待機時執行某些操作,使用以上幾種方法是不可行的。

2android中有乙個alarmmanager物件,可以使用該物件執行待機時的操作。具體設定的方法如下:

2.1設定鬧鈴的型別

alarmmanager.rtc,硬體鬧鐘,不喚醒手機(也可能是其它裝置)休眠;當手機休眠時不發射鬧鐘。

alarmmanager.rtc_wakeup,硬體鬧鐘,當鬧鐘發躰時喚醒手機休眠;

alarmmanager.elapsed_realtime,真實時間流逝鬧鐘,不喚醒手機休眠;當手機休眠時不發射鬧鐘。

alarmmanager.elapsed_realtime_wakeup,真實時間流逝鬧鐘,當鬧鐘發躰時喚醒手機休眠;

alarmmanager.power_off_wakeup:能喚醒系統,他是一種關機鬧鈴,就是說裝置在關機狀態下也可以喚醒系統,所以我們把它稱為關機鬧鈴。

rtc鬧鐘和elapsed_realtime最大的差別就是前者可以通過修改手機時間觸發鬧鐘事件,後者要通過真實時間的流逝,即使在休眠狀態,時間也會被計算。

2.2設定鬧鈴的開始時間

如果使用elapsed_realtime或者elapsed_realtime_wakeup型別應該呼叫systemclock.elapsedrealtime()獲取相對時間在加上你設定的延遲時間

如果使用rtc或者rtc_wakeup型別應該呼叫system.currenttimemillis()獲取從1970.1.1號以來的時間在加上你設定的延遲時間

2.3pendingintent

乙個pendingintent物件,表示到時間後要執行的操作。pendingintent與intent類似,可以封裝activity、broadcastreceiver和service。

但與intent不同的是,pendingintent可以脫離應用程式而存在。

接觸android沒幾天,不太了解。

本來寫好的乙個應用在無意中發現,待機的時候,應用中的乙個執行緒停止了執行。

這個執行緒是每隔一分鐘上傳乙個資料到伺服器上。

我當時測試的時候,沒想過待機(接開關鍵)下的情況是怎樣的,現在發現,只要手機一進入待機狀態,這個執行緒就停止工作了。

不過有乙個奇怪的現象,因為我的應用中同時啟動了三個執行緒。

乙個負責每隔一分鐘上傳乙個資料,當待機的時候,這個執行緒暫停執行,當手機不待機的時候,馬上覆活。

乙個負責接收伺服器發過來的udp資料報,這個執行緒倒是不受待機的影響,當有資料來的時候,可以正常處理。

難道是因為datagramsocket.receive(datagrampacket);阻塞的原因?

public void run() }

實驗2:使用alarmservice:

2.1通過alarmservice每個5秒傳送乙個廣播,setrepeating時的型別為alarmmanager.elapsed_realtime。

拔掉usb線,按下電源鍵,過一段時間再次開啟螢幕,發現定時器沒有繼續計數。

2.2setrepeating是的型別設定為alarmmanager.elapsed_realtime_wakeup

拔掉usb線,按下電源鍵,過一點時間再次開啟螢幕,發現定時器一直在計數。

如此看來,使用wakeup才能保證自己想要的定時器一直工作,但是肯定會引起耗電量的增加。

我最後自已寫了乙個service類,然後使用alarmservice每隔一分鐘執行一次,在待機的時候也能正常執行。

解決win xp休眠後無法喚醒的問題

最近聽說一朋友的電腦出現乙個奇怪的現象,每次電腦待機後,總是要重新啟動才能恢復,很是煩人,問我這到底是怎麼回事?應該怎樣解決?根據我的經驗,問題可能出在系統方面,因此一不做二不休,重新安裝windows xp,心想,問題其實就這麼簡單排除了,正洋洋得意之時,沒過幾日,朋友的 又打過來,說是休眠喚醒問...

休眠後電腦馬上自動喚醒解決

檢視計算機是支援休眠 混合睡眠 powercfg a 開啟休眠 powercfg hibernate on 關閉休眠命令是 powercfg hibernate offpowercfg devicequery wake programmablepowercfg devicequery wake ar...

Ubuntu 18 04 休眠後無法喚醒的解決辦法

解決辦法 安裝laptop mode tools工具包。1.檢查是否安裝了grep laptop mode tools 工具包 dpkg l grep laptop mode tools 如果執行命令無結果輸出,表示未安裝 如果已安裝,忽略第2步 2.安裝laptop mode 執行命令 sudo ...