Android中Timer类和TimerTask粗解

今天看图形与图像处理的时候看到了一个Timer类,在Android中被称为定时器(Timer),用于在后台线程计划执行指定任务,能够定时的控制修改数据。

TimerTask是一个抽象类,它的子类代表可被Timer定时执行的任务。TimerTask类实现了Tunnable接口。

schedule的意思(时间表、计划表)。

Timer和TimerTask分别继承自:java.util.Timer;和java.util.TimerTask;包。

下面是一个简单的Demo:

package com.xplus.timertest;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class TiemrTest extends Activity {

	private Button start;
	private TextView tv;
	// 声明Timer对象
	private Timer timer;
	private int countflag = 0;
	// 声明自定义类MyHandler
	private MyHandler myhandler;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();

		start.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				// schedule方法的三个参数分别为:
				// 1、任务;2、任务开始多长时间执行;3、每隔短长时间循环执行任务
				timer.schedule(new TimerTask() {
					@Override
					public void run() {
						Message msg = new Message();
						msg.what = countflag;
						myhandler.sendMessage(msg);
						countflag++;
					}
				}, 1000, 3000);
			}
		});

	}

	// 初始化
	private void init() {
		start = (Button) findViewById(R.id.button1);
		tv = (TextView) findViewById(R.id.textView1);
		// new一个timer对象
		timer = new Timer();
		myhandler = new MyHandler();
	}

	// 自定义类继承自Handler
	class MyHandler extends Handler {
		@Override
		public void handleMessage(Message msg) {
			tv.setText(msg.what + "---");
		}

	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


由于Android中规定UI的绘制必须在主线程中个绘制,所以需要用Message和Message来传递数据。

先看了这么多,以后用的时候再查看。有什么不对的地方希望大家给我指正。


你可能感兴趣的:(timer,android,任务,button,menu,图像处理)