Heim  >  Artikel  >  Java  >  Analysieren Sie die Verwendung und Beispiele von Timer und TimerTask in Java in Android

Analysieren Sie die Verwendung und Beispiele von Timer und TimerTask in Java in Android

高洛峰
高洛峰Original
2017-01-11 16:10:371121Durchsuche

In der Entwicklung müssen wir manchmal eine bestimmte Aufgabe in einem festen Intervall ausführen. Wenn sich beispielsweise die Steuerelemente auf der Benutzeroberfläche im Laufe der Zeit ändern müssen, können wir die von Java bereitgestellten Timer-Tool-Klassen verwenden, nämlich Timer und TimerTask.

Timer ist eine gewöhnliche Klasse mit mehreren wichtigen Methoden. TimerTask ist eine abstrakte Klasse mit einer abstrakten Methode run(), die der run()-Methode in Threads ähnelt. Wir verwenden Timer. Verwenden Sie dann die Zeitplanmethode dieses Objekts, um diesen Intervallvorgang abzuschließen.

Die Schedule-Methode hat drei Parameter

Der erste Parameter ist ein Objekt vom Typ TimerTask. Die von uns implementierte run()-Methode ist eine regelmäßig auszuführende Aufgabe

Der zweite Parameter hat zwei Typen: Der erste ist ein langer Typ, der angibt, wie lange es dauern wird, bis die Ausführung beginnt, und der andere ist der Typ „Datum“, der angibt, wie lange es dauern wird, bis die Ausführung beginnt


Der dritte Parameter ist der Ausführungszyklus, der vom langen Typ ist.

Die Schedule-Methode weist auch eine Ausführungsüberlastung mit zwei Parametern auf. Der erste Parameter ist immer noch TimerTask, und der zweite Parameter wird als Long ausgedrückt, um anzugeben, wie lange es danach ausgeführt wird, und als Date, das angibt eine bestimmte Zeit einmal ausgeführt.

Timer ist ein Thread, um die Planung von TimerTask abzuschließen. Das heißt, das Timer-Objekt ruft die Schedule-Methode einmal auf, um einen Thread zu erstellen Wenn der Zeitplan einmal ausgeführt wird, lautet die TimerTask: Wenn die Schleife auf unbestimmte Zeit fortgesetzt wird, verwenden Sie die Funktion cancel() des Timers, um den Vorgang zu stoppen. Nachdem derselbe Timer die Methode cancel() einmal ausgeführt hat, werden natürlich alle Timer-Threads beendet.

Verwendung

//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);
Beispielcode:

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; 
  } 
 } 
 }; 
}
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Lernen aller hilfreich sein wird Ich hoffe, dass jeder die chinesische Website häufiger nutzt.

Weitere Artikel, die die Verwendung und Beispiele von Timer und TimerTask in Java in Android analysieren, finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn