Maison >Java >javaDidacticiel >Analyser l'utilisation et les exemples de Timer et TimerTask en Java sous Android

Analyser l'utilisation et les exemples de Timer et TimerTask en Java sous Android

高洛峰
高洛峰original
2017-01-11 16:10:371188parcourir

En développement, nous avons parfois besoin d'exécuter une certaine tâche à un intervalle fixe. Par exemple, si les contrôles de l'interface utilisateur doivent changer au fil du temps, nous pouvons utiliser les classes d'outils de minuterie fournies par Java, à savoir Timer et TimerTask.

Timer est une classe ordinaire avec plusieurs méthodes importantes ; TimerTask est une classe abstraite avec une méthode abstraite run(), qui est similaire à la méthode run() dans les threads. Nous utilisons Timer pour créer son objet, puis utilisez la méthode de planification de cet objet pour terminer cette opération d'intervalle.

La méthode planning a trois paramètres

Le premier paramètre est un objet de type TimerTask. La méthode run() que nous implémentons TimerTask est une tâche à exécuter périodiquement
.

Le deuxième paramètre a deux types, le premier est de type long, indiquant le temps qu'il faudra pour démarrer l'exécution, et l'autre est de type Date, indiquant le temps qu'il faudra pour démarrer l'exécution

Le troisième paramètre est le cycle d'exécution, qui est de type long.

La méthode planning a également une surcharge d'exécution avec deux paramètres. Le premier paramètre est toujours une TimerTask, et le deuxième paramètre est exprimé sous la forme d'un long pour indiquer combien de temps il faudra pour l'exécuter. , il indique une certaine heure Exécuté une fois.

Timer est un thread. Utilisez la méthode planning pour terminer la planification de TimerTask. Plusieurs TimerTask peuvent partager un Timer, c'est-à-dire que l'objet Timer appelle la méthode planning une fois pour créer un thread, et après l'appel. la planification une fois, la TimerTask est Si la boucle continue indéfiniment, utilisez Cancel() de Timer pour arrêter l'opération. Bien sûr, après que le même Timer ait exécuté la méthode Cancel() une fois, tous les threads du Timer seront terminés.

Utilisation

//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);
Exemple de code :

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; 
  } 
 } 
 }; 
}
Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'apprentissage de chacun, et je. j'espère que tout le monde utilisera davantage le site Web chinois.

Pour plus d'articles analysant l'utilisation et des exemples de Timer et TimerTask en Java sous Android, veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn