ホームページ  >  記事  >  Java  >  Android の Java での Timer と TimerTask の使用法と例を分析する

Android の Java での Timer と TimerTask の使用法と例を分析する

高洛峰
高洛峰オリジナル
2017-01-11 16:10:371173ブラウズ

開発では、特定のタスクを一定の間隔で実行する必要がある場合があります。たとえば、UI 上のコントロールを時間の経過とともに変更する必要がある場合は、Java が提供するタイマー ツール クラス、つまり Timer と TimerTask を使用できます。

Timer は、いくつかの重要なメソッドを備えた通常のクラスですが、TimerTask は、スレッドの run() メソッドに似た抽象メソッド run() を備えた抽象クラスです。このオブジェクトのスケジュール メソッドを使用して、この間隔の操作を完了します。

スケジュール メソッドには 3 つのパラメータがあります

最初のパラメータは、TimerTask 型のオブジェクトです。TimerTask を実装する run() メソッドは、定期的に実行されるタスクです。

2 番目のパラメータには 2 つのタイプがあります。は実行開始までにかかる時間を示すlong型で、もう1つは実行開始までにかかる時間を示すDate型です

3番目のパラメータは実行期間であり、long型です。

スケジュール メソッドには 2 つのパラメーターを持つ実行オーバーロードもあります。最初のパラメーターは依然として TimerTask であり、2 番目のパラメーターは実行にかかる時間を示す Long として表されます。Date の場合は、それを意味します。一定時間後に1回実行されます。

Timer はスレッドです。TimerTask のスケジュールを完了するには、schedule メソッドを使用します。つまり、Timer オブジェクトは、schedule メソッドを 1 回呼び出してスレッドを作成し、スケジュールを 1 回呼び出した後、 TimerTask が無制限のループである場合は、Timer の cancel() を使用して操作を停止します。もちろん、同じ Timer が cancel() メソッドを 1 回実行すると、すべての 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 中国語 Web サイトに参加していただければ幸いです。

Android の Java での Timer と TimerTask の使用法と例を分析した記事をさらに詳しく知りたい場合は、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。