快上网专注成都网站设计 成都网站制作 成都网站建设
成都网站建设公司服务热线:028-86922220

网站建设知识

十年网站开发经验 + 多家企业客户 + 靠谱的建站团队

量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决

TimerandTimerTask计时器

利用Timer和TimerTask做一个计时器

创新互联建站始终坚持【策划先行,效果至上】的经营理念,通过多达10多年累计超上千家客户的网站建设总结了一套系统有效的全网整合营销推广解决方案,现已广泛运用于各行各业的客户,其中包括:成都水电改造等企业,备受客户称扬。

包括开始、停止、暂停、恢复四个功能

需要注意的问题主要有两点:

1、Timer和TimerTask在调用cancel()取消后

不能再执行 schedule语句,否则提示出错

2、只能在UI主线程中更新控件/组件。

在其他线程中,更新控件/组件,会提示出错

package com.example.testtimer2;
import java.util.Timer;
import java.util.TimerTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.annotation.SuppressLint;
import android.app.Activity;
@SuppressLint("HandlerLeak")
public class MainActivity extends Activity implements OnClickListener{
private Button btnStart;
private Button btnPause;
private boolean isStop = true;
private boolean isPause = false;
private int count = 0;
private int delay_time = 1000;
private int UPDATE_UI = 0x11; 
private Timer mTimer;
private TimerTask mTimerTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnStart = ((Button) findViewById(R.id.button1));
btnPause = ((Button) findViewById(R.id.button2));
btnStart.setOnClickListener(this);
btnPause.setOnClickListener(this);
}
private void startTimer(){
if(mTimer == null){
mTimer = new Timer();
}
if(mTimerTask == null){
mTimerTask = new TimerTask(){
public void run() {
do{
try{
Thread.sleep(delay_time);
mHandler.sendEmptyMessage(UPDATE_UI);
if(!isPause){
count++;
}
if(isStop){
count = 0;
}
}catch(Exception e){
e.printStackTrace();
}
}while(!isStop);
}
};
}
if(mTimer != null && mTimerTask != null){
/**
 * Timer.schedule(TimerTask task, long delay, long period)
 * 三个参数分别为:1、要执行的任务 2、延迟多少时间开始执行 3、每隔多少时间执行一次
 * */
mTimer.schedule(mTimerTask, delay_time);
}
}
private void stopTimer(){
if(mTimer != null){
mTimer.cancel();
mTimer = null;
}
if(mTimerTask != null){
mTimerTask.cancel();
mTimerTask = null;
}
count = 0;
}
private Handler mHandler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
case 0x11:
initUI();
break;
}
}
};
private void initUI(){
((TextView) findViewById(R.id.textView1)).setText(count + "");
}
@Override
public void onClick(View arg0) {
if(arg0.equals(btnStart)){
if(isStop){
startTimer();
}else{
stopTimer();
}
isStop = !isStop;
if(isStop){
btnStart.setText(R.string.start_time);
}else{
btnStart.setText(R.string.stop_time);
}
}
if(arg0.equals(btnPause)){
if(isPause){
}else{
}
isPause = !isPause;
if(isPause){
btnPause.setText(R.string.resume_time);
}else{
btnPause.setText(R.string.pause_time);
}
}
}
}

//layout布局


    
    

//string.xml



    TestTimer2
    Settings
    Hello world!
    start
    stop
    resume
    pause
    time


网站名称:TimerandTimerTask计时器
文章网址:http://6mz.cn/article/peoghd.html

其他资讯