>  기사  >  Java  >  Android의 Java에서 Timer 및 TimerTask의 사용법과 예를 분석합니다.

Android의 Java에서 Timer 및 TimerTask의 사용법과 예를 분석합니다.

高洛峰
高洛峰원래의
2017-01-11 16:10:371169검색

개발 중에 일정한 간격으로 특정 작업을 실행해야 하는 경우가 있습니다. 예를 들어 UI의 컨트롤을 시간이 지남에 따라 변경해야 하는 경우 Java에서 제공하는 타이머 도구 클래스인 Timer 및 TimerTask를 사용할 수 있습니다.

Timer는 여러 가지 중요한 메소드가 있는 일반 클래스입니다. TimerTask는 스레드의 run() 메소드와 유사한 추상 메소드 run()이 있는 추상 클래스입니다. 그런 다음 이 개체의 일정 메서드를 사용하여 이 간격 작업을 완료합니다.

schedule 메소드에는 세 개의 매개변수가 있습니다.

첫 번째 매개변수는 TimerTask 유형의 객체입니다. TimerTask를 구현하는 run() 메소드는 주기적으로 실행되는 작업입니다.

두 번째 매개변수에는 두 가지 유형이 있습니다. 첫 번째는 실행을 시작하는 데 걸리는 시간을 나타내는 long 유형이고, 다른 하나는 실행을 시작하는 데 걸리는 시간을 나타내는 Date 유형입니다.


세 번째 파라미터는 실행주기로, long 타입입니다.

스케줄 메소드에도 두 개의 매개변수가 있는 실행 오버로드가 있습니다. 첫 번째 매개변수는 여전히 TimerTask이고 두 번째 매개변수는 실행하는 데 걸리는 시간을 나타내기 위해 Long으로 표현됩니다. , 특정 시간을 나타냅니다.

Timer는 Schedule 메소드를 사용하여 TimerTask의 스케줄링을 완료합니다. 여러 TimerTask가 Timer를 공유할 수 있습니다. 즉, Timer 객체는 Schedule 메소드를 한 번 호출하여 스레드를 생성합니다. 일정을 한 번만 실행하면 TimerTask는 루프가 무한정 계속되는 경우 Timer의 cancel()을 사용하여 작업을 중지합니다. 물론 동일한 Timer가 cancel() 메서드를 한 번 실행한 후에는 모든 Timer 스레드가 종료됩니다.

사용법

//true 说明这个timer以daemon方式运行(优先级低,程序结束timer也自动结束) 
java.util.Timer timer = new java.util.Timer(true); 
  
TimerTask task = new TimerTask() { 
 public void run() { 
 //每次需要执行的代码放到这里面。 
 } 
}; 
  
//以下是几种调度task的方法: 
  
//time为Date类型:在指定时间执行一次。 
timer.schedule(task, time); 
  
//firstTime为Date类型,period为long,表示从firstTime时刻开始,每隔period毫秒执行一次。 
timer.schedule(task, firstTime, period); 
  
//delay 为long类型:从现在起过delay毫秒执行一次。 
timer.schedule(task, delay); 
  
//delay为long,period为long:从现在起过delay毫秒以后,每隔period毫秒执行一次。 
timer.schedule(task, delay, period);
샘플 코드:

import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
  
import java.util.Timer; 
import java.util.TimerTask; 
  
public class TimerTaskActivity extends Activity { 
  
 private Timer mTimer; 
  
 @Override
 protected void onCreate(Bundle savedInstanceState) { 
 super.onCreate(savedInstanceState); 
 // init timer 
 mTimer = new Timer(); 
 // start timer task 
 setTimerTask(); 
 } 
  
 @Override
 protected void onDestroy() { 
 super.onDestroy(); 
 // cancel timer 
 mTimer.cancel(); 
 } 
  
 private void setTimerTask() { 
 mTimer.schedule(new TimerTask() { 
  @Override
  public void run() { 
  Message message = new Message(); 
  message.what = 1; 
  doActionHandler.sendMessage(message); 
  } 
 }, 1000, 1000/* 表示1000毫秒之後,每隔1000毫秒執行一次 */); 
 } 
  
 /** 
 * do some action 
 */
 private Handler doActionHandler = new Handler() { 
 @Override
 public void handleMessage(Message msg) { 
  super.handleMessage(msg); 
  int msgId = msg.what; 
  switch (msgId) { 
  case 1: 
   // do some action 
   break; 
  default: 
   break; 
  } 
 } 
 }; 
}
위 내용은 모두의 학습에 도움이 되기를 바라며, 모두가 PHP를 더 많이 사용하기를 바랍니다.

Android의 Java에서 Timer 및 TimerTask의 사용법과 예를 분석한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.