1. 程式人生 > >Timer物件執行定時任務只執行一次的問題

Timer物件執行定時任務只執行一次的問題

最近在做物聯網專案,用到了Socket長連線方面的技術,找了很多這方面資料,都說保持長連線的方法最常見的就是定時傳送垃圾訊息讓客戶端與服務端的網路不斷開。於是用到了Timer物件來定時傳送垃圾訊息,可是卻遇到了TimerTask只執行一次就不再執行的問題。
class  Task extends TimerTask {

		@Override
		public void run() {
			Log.d("com.xxx.xxx.service", "timertask -------- running!");
			Packet packet = new Packet();
			packet.pack("WVM|1\r\n");
			send(packet);
		}
	}

task執行部分是這樣寫的:
timer = new Timer(true);
		timer.schedule(new Task(), 30000);

我的本意是讓task每隔30000毫秒執行一次,但仔細檢視API後發現,這個方法的意思是延時多少毫秒後執行此task。

schedule(TimerTask task, long delay)的註釋:Schedules the specified task for execution after the specified delay。

後來我更換成:

timer = new Timer(true);
		timer.schedule(new Task(), 5000, 30000);
執行就正常了。

schedule(TimerTask task, long delay, long period)