android的timertask,Android 中 Timer 和 TimerTask的使用「建议收藏」

2022-08-01 14:45:40 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

Android中Timer是一个普通的类,其中有几个重要的方法;而TimerTask则是一个抽象类,其中含有一个抽象方法run()。

使用Timer类中的schedule()方法可以完成对TimerTask的调度,该方法具有三个参数,其函数声明如下:

public void schedule(TimerTask task, long delay, long period)

其中第一个参数为TimerTask的对象,通过实现其中的run()方法可以周期的执行某一个任务;第二个参数表示延迟的时间,即多长时间后开始执行;第三个参数表示执行的周期。

多个TimerTask是可以共用一个Timer的,通过调用Timer的schedule方法可以创建一个线程,并且调用一次schedule后TimerTask是无限的循环下去的,使用Timer的cancel()停止操作。当同一个Timer执行一次cancle()方法后,所有Timer线程都被终止。

这里为了验证Timer和TimerTask的用法,举了一个案例进行验证,其源代码如下所示:

package com.glemontree.timetaskdemo;

import java.util.Timer;

import java.util.TimerTask;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.View;

import android.widget.TextView;

public class MainActivity extends Activity {

private int secondLeft = 6;

private TextView textView;

Timer timer = new Timer();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

textView = (TextView) findViewById(R.id.texttime);

}

public void begin(View view) {

timer.schedule(task, 1000, 1000);

}

TimerTask task = new TimerTask() {

@Override

public void run() {

// TODO Auto-generated method stub

runOnUiThread(new Runnable() {

@Override

public void run() {

// TODO Auto-generated method stub

secondLeft–;

textView.setText(“” secondLeft);

if (secondLeft < 0) {

timer.cancel();

textView.setText(“倒计时结束”);

}

}

});

}

};

@Override

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

}

上面这段代码需要注意的是由于改变UI只能在主线程中进行,因此调用了runOnUiThread方法运行在主线程。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126034.html原文链接:https://javaforall.cn

0 人点赞