三種不同的定時間隔迴圈發訊息的方法
阿新 • • 發佈:2019-01-24
先簡寫記載一下吧:
平常在後臺中,Service等,我們都會維護一種動作就是定時的間隔,迴圈的作一下動作。比如定時監測一下有無更新版本,第幾秒鐘發個心跳包的之類的,目前為止我也沒有太好的方法,先記載一下我可以實現的三種方法:
1、最簡單,新開一個執行緒,隔間隔執行一次,間隔用sleep來弄,但是我覺得這樣有點浪費資源。當然我並沒有量化有多費資源,自己想一下而已。
2、Android的AlarmManager,這貨可以定時傳送broadcast,,在receiver中即可以做點事啦。但是我覺得這個也蠻重量級的,broadcast,整個系統都可以收得到,掛上一小段程式碼提示:
alarm = (AlarmManager) getSystemService(ALARM_SERVICE);
// 使用系統時間設定任務20秒後啟動,sender是一個PendingIntent
// alarm.set(AlarmManager.RTC_WAKEUP,
// System.currentTimeMillis() + 20 * 1000, sender);
//這個也比較好用...
alarm.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 8 * 1000, 5000, sender);
3、是用handler,待我貼上程式碼來:
就是這麼一種情況,我覺得這個輕量級,但是覺得也有點怪怪的呢,呵呵..Handler handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub Log.i("tag", "handleMsg occured:" + msg.what + "| " + System.currentTimeMillis()); sendEmptyMessageDelayed(15, 5000); super.handleMessage(msg); } }; handler.sendEmptyMessageDelayed(15, 5000);