Timer 객체가 지정된 시간에 작업을 한 번만 수행하는 문제

998 단어 오류 레코드
최근에 사물인터넷 프로젝트를 하면서 소켓장 연결 분야의 기술을 사용했고 이 분야의 자료를 많이 찾았습니다. 긴 연결을 유지하는 방법은 가장 흔히 볼 수 있는 것이 정시에 스팸메일을 보내서 클라이언트와 서비스 측의 네트워크를 계속 열어주는 것이라고 합니다.그래서 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
"); 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)

좋은 웹페이지 즐겨찾기