AlarmManager的使用

來源:互聯網
上載者:User

原文地址:http://www.cnblogs.com/kross/p/3643708.html

 

AlarmManager可以設定一個規定的時間,或者重複從某一個時間開始,等間隔的做一個操作。可以用來做一個鬧鐘程式,或者在特定的時間訪問互連網。

擷取AlarmManager和擷取系統的其他服務是一樣的,使用如下代碼:

AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

我們通過AlarmManager來發送一條請求到BroadcastReceiver,先簡單的實現一個BroadcastReceiver。

  MyReceiver    String TAG = "MyReceiver" "onReceive"

做完這步之後,記得要在Manifest檔案裡面註冊這個類,要不然是沒有任何反應的……

然後我們就在MainActivity裡面弄一個按鈕,按鈕的方法裡面就建立Intent,讓AlarmManager來發送請求。

 "foo"=  Intent(, MyReceiver."hahah"= PendingIntent.getBroadcast(, 1=     time =    am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime(), 5000"foo over"

這裡很重要的一點就是這個elapsedRealtime這個東西,經過我的測試,終於發現這個時間是什麼東西了。

它是你開機之後到當前的時間,怎麼說呢,打個比方吧,假如你關掉手機,然後開機,開機完成後的第一件事就是調用這個SystemClock.elapsedRealtime()方法,你把它轉成字串,得到的時間是1970.01.01 08:00:00

然後你後續的調用都是基於這個時間之上的,比如開機後過了30s,你去調用這個方法,得到的時間就是1970.01.01 08:00:30

如果你又重新啟動了手機,時間又會被重設1970.01.01 08:00:00

我看很多部落格都沒有講清楚這一點,都是模糊的,照本宣科似得翻譯了下文檔,看得似懂非懂的。

AlarmManager的set方法就是發一次請求,setRepeating就是重複的發請求,這兩個方法的第一個參數都十分的詭異,我並沒有真正的搞明白。

其實可以分兩組,一組是RLAPSED_REALTIME, RLAPSED_REALTIME_WAKEUP,另一組是RTC, RTC_WAKEUP,這兩組的區別在於用的是哪一個時間,RLAPSED_REALTIME這一組用的是SystemClock.elapsedRealtime()取到的時間,讓RTC用的就是正常的時間,這兩者有什麼區別呢,後者RTC,使用者可以通過修改手機的時間(就是設定時間嘛,誰都可以做到)來改變,可能會重複調用到AlarmManager。而elapsed realtime是沒有辦法的。

然後就是這個WAKEUP的問題,文檔上說是什麼裝置睡眠的時候會被喚醒,但是我不知道所謂的裝置sleep是個什麼狀態……我做了一個5s發送一次請求的例子,啟動後,把螢幕給關掉了(就是黑了屏,再進去要點亮螢幕,然後解鎖),它還是會發送請求,並且也沒有所謂的喚醒,所以這個沒有搞明白……

 

原文地址:http://www.cnblogs.com/kross/p/3643708.html

新浪微博:http://weibo.com/KrossFord

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.