1. 程式人生 > >三種不同的定時間隔迴圈發訊息的方法

三種不同的定時間隔迴圈發訊息的方法

        先簡寫記載一下吧:

              平常在後臺中,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);
就是這麼一種情況,我覺得這個輕量級,但是覺得也有點怪怪的呢,呵呵..