招生熱線
0755-86191118 0755-86191118
我的位置: 首頁 > 學(xué)習(xí)專區(qū) > 安卓技術(shù) > android定時器alarmmanager和timer的區(qū)別

android定時器alarmmanager和timer的區(qū)別

2012-02-04 11:13:00
來源:
[導(dǎo)讀] 在Android上常用的定時器有兩種,一種是Java util Timer,一種就是系統(tǒng)的AlarmService了。實驗1:使用Java util Timer。在onStart()創(chuàng)創(chuàng)建T

在Android上常用的定時器有兩種,一種是Java.util.Timer,一種就是系統(tǒng)的AlarmService了。

實驗1:使用Java.util.Timer。

在onStart()創(chuàng)創(chuàng)建Timer,每5秒更新一次計數(shù)器,并啟動。

Java代碼

1mTimer = new Timer();

2mTimer.schedule(new TimerTask() {

3 @Override

4 public void run() {

5 ++mCount;

6 mHandler.sendEmptyMessage(0);

7 }

8 }, 5*1000, 5*1000);

當(dāng)連接USB線進(jìn)行調(diào)試時,會發(fā)現(xiàn)一切工作正常,每5秒更新一次界面,即使是按下電源鍵,仍然會5秒觸發(fā)一次。

當(dāng)拔掉USB線,按下電源鍵關(guān)閉屏幕后,過一段時間再打開,發(fā)現(xiàn)定時器明顯沒有繼續(xù)計數(shù),停留在了關(guān)閉電源鍵時的數(shù)字。

實驗2:使用AlarmService:

2.1通過AlarmService每個5秒發(fā)送一個廣播,setRepeating時的類型為AlarmManager.ELAPSED_REALTIME。

Java代碼

1AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

2am.setRepeating(AlarmManager.ELAPSED_REALTIME, firstTime, 5*1000, sender);

拔掉USB線,按下電源鍵,過一段時間再次打開屏幕,發(fā)現(xiàn)定時器沒有繼續(xù)計數(shù)。

2.2setRepeating是的類型設(shè)置為AlarmManager.ELAPSED_REALTIME_WAKEUP

Java代碼

1AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);

2am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 5*1000, sender);

拔掉USB線,按下電源鍵,過一點時間再次打開屏幕,發(fā)現(xiàn)定時器一直在計數(shù)。

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

評論
好吊妞免费视频在线观看,久久亚洲国产人成综合网,久久精品国产2020,欧美精品综合在线
亚洲一区视频香蕉 | 日韩一区二区久久 | 日韩精品在线盗摄 | 婷婷久久综合九色综合88 | 欧美日韩午夜视频在线观看 | 亚洲福利国产精品合集在线看 |