1.利用Timer和Handler类
2.利用子线程和Handler类
方法一解析:
利用Timer类具有每隔特定时间处理程序代码的功能
在MainActivity首先创建Handler对象handler,
timer.schedule(TimerTask对象,延迟时间,间隔时间) timer每隔一段时间就会执行TimerTask对象的run()方法
但TimerTask对象不能更新UI否则会产生错误,所以我们在Timer的run()方法中调用handler.sendMessage(Message msg)发送消息给主类中的handler,
让handler的handleMessage(Message msg)来处理
方法二解析:
在MainActivity首先创建Handler对象handler,
在MainActivity中定义内部的Thread类,void run()内部是处理UI的代码,最后一行使用handler.postDelayed(该线程对象,延迟时间);
最后按钮的监听处理一定要使用handler.post(线程名)来启动进程


1 package com.example.mytest; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 import java.util.Timer; 8 import java.util.TimerTask; 9 10 import android.os.Bundle; 11 import android.os.Handler; 12 import android.os.Message; 13 import android.os.SystemClock; 14 import android.text.Html; 15 import android.text.SpannableString; 16 import android.text.Spanned; 17 import android.text.method.LinkMovementMethod; 18 import android.text.style.ForegroundColorSpan; 19 import android.text.style.URLSpan; 20 import android.util.Log; 21 import android.view.KeyEvent; 22 import android.view.MotionEvent; 23 import android.view.View; 24 import android.view.View.OnClickListener; 25 import android.view.View.OnKeyListener; 26 import android.view.View.OnTouchListener; 27 import android.widget.ArrayAdapter; 28 import android.widget.Button; 29 import android.widget.Chronometer; 30 import android.widget.Chronometer.OnChronometerTickListener; 31 import android.widget.EditText; 32 import android.widget.FrameLayout; 33 import android.widget.ListView; 34 import android.widget.SimpleAdapter; 35 import android.widget.TextView; 36 import android.widget.Toast; 37 import android.app.Activity; 38 import android.graphics.Color; 39 import android.graphics.drawable.Drawable; 40 41 42 43 public class MainActivity extends Activity { 44 private Button button1,button2,button3,button4; 45 private TextView textView; 46 private int sum=0,fen,miao; 47 private boolean flag=false; 48 protected void onCreate(Bundle savedInstanceState) { 49 50 super.onCreate(savedInstanceState); 51 setContentView(R.layout.activity_main); 52 textView=(TextView)findViewById(R.id.textView1); 53 button1=(Button)findViewById(R.id.button1); 54 button2=(Button)findViewById(R.id.button2); 55 button3=(Button)findViewById(R.id.button3); 56 button4=(Button)findViewById(R.id.button4); 57 button1.setOnClickListener(clickListener); 58 button2.setOnClickListener(clickListener); 59 button3.setOnClickListener(clickListener); 60 button4.setOnClickListener(clickListener); 61 Timer timer=new Timer(); 62 timer.schedule(timerTask, 0, 1000); 63 } 64 TimerTask timerTask=new TimerTask(){ 65 66 @Override 67 public void run() { 68 if(flag) 69 { 70 sum++; 71 Message message=new Message(); 72 message.what=1; 73 handler.sendMessage(message);// TODO Auto-generated method stub 74 } 75 } 76 77 }; 78 Handler handler=new Handler(){ 79 80 @Override 81 public void handleMessage(Message msg) { 82 // TODO Auto-generated method stub 83 super.handleMessage(msg); 84 if(msg.what==1){ 85 86 fen=sum/60; 87 miao=sum%60; 88 String str=""; 89 str=str+fen+":"+miao; 90 textView.setText(str); 91 } 92 } 93 94 }; 95 OnClickListener clickListener=new OnClickListener(){ 96 97 public void onClick(View v) { 98 // TODO Auto-generated method stub 99 if(v.getId()==R.id.button1) 100 { 101 flag=true; 102 } 103 else if(v.getId()==R.id.button2) 104 { 105 flag=false; 106 } 107 else if(v.getId()==R.id.button3) 108 { 109 flag=false; 110 sum=0; 111 } 112 else 113 { 114 115 } 116 117 } 118 119 }; 120 121 122 }


1 package com.example.mytest; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 import java.util.Map; 7 import java.util.Timer; 8 import java.util.TimerTask; 9 10 import android.os.Bundle; 11 import android.os.Handler; 12 import android.os.Message; 13 import android.os.SystemClock; 14 import android.text.Html; 15 import android.text.SpannableString; 16 import android.text.Spanned; 17 import android.text.method.LinkMovementMethod; 18 import android.text.style.ForegroundColorSpan; 19 import android.text.style.URLSpan; 20 import android.util.Log; 21 import android.view.KeyEvent; 22 import android.view.MotionEvent; 23 import android.view.View; 24 import android.view.View.OnClickListener; 25 import android.view.View.OnKeyListener; 26 import android.view.View.OnTouchListener; 27 import android.widget.ArrayAdapter; 28 import android.widget.Button; 29 import android.widget.Chronometer; 30 import android.widget.Chronometer.OnChronometerTickListener; 31 import android.widget.EditText; 32 import android.widget.FrameLayout; 33 import android.widget.ListView; 34 import android.widget.SimpleAdapter; 35 import android.widget.TextView; 36 import android.widget.Toast; 37 import android.app.Activity; 38 import android.graphics.Color; 39 import android.graphics.drawable.Drawable; 40 41 42 43 public class MainActivity extends Activity { 44 private Button button1,button2,button3,button4; 45 private TextView textView; 46 private int sum=0,fen,miao; 47 private boolean flag=false; 48 Handler handler=new Handler(); 49 MyThread myThread=new MyThread(); 50 protected void onCreate(Bundle savedInstanceState) { 51 52 super.onCreate(savedInstanceState); 53 setContentView(R.layout.activity_main); 54 textView=(TextView)findViewById(R.id.textView1); 55 button1=(Button)findViewById(R.id.button1); 56 button2=(Button)findViewById(R.id.button2); 57 button3=(Button)findViewById(R.id.button3); 58 button4=(Button)findViewById(R.id.button4); 59 button1.setOnClickListener(clickListener); 60 button2.setOnClickListener(clickListener); 61 button3.setOnClickListener(clickListener); 62 button4.setOnClickListener(clickListener); 63 64 } 65 class MyThread extends Thread{ 66 @Override 67 public void run() { 68 // TODO Auto-generated method stub 69 super.run(); 70 sum++; 71 fen=sum/60; 72 miao=sum%60; 73 String str=""; 74 str=str+fen+":"+miao; 75 textView.setText(str); 76 handler.postDelayed(myThread, 1000); 77 78 } 79 } 80 OnClickListener clickListener=new OnClickListener(){ 81 public void onClick(View v) { 82 // TODO Auto-generated method stub 83 if(v.getId()==R.id.button1) 84 { 85 handler.post(myThread); 86 } 87 else if(v.getId()==R.id.button2) 88 { 89 handler.removeCallbacks(myThread); 90 } 91 else if(v.getId()==R.id.button3) 92 { 93 flag=false; 94 sum=0; 95 } 96 else 97 { 98 99 } 100 101 } 102 103 }; 104 105 106 107 108 }