Android实现计时与倒计时的几种方法


Android实现计时与倒计时的五种方法:

方法一

Timer与TimerTask(Java实现)

  1. public class timerTask extends Activity{  
  2.   
  3.     private int recLen = 11;  
  4.     private TextView txtView;  
  5.     Timer timer = new Timer();  
  6.   
  7.     public void onCreate(Bundle savedInstanceState){  
  8.         super.onCreate(savedInstanceState);  
  9.           
  10.         setContentView(R.layout.timertask);  
  11.         txtView = (TextView)findViewById(R.id.txttime);  
  12.           
  13.         timer.schedule(task, 10001000);       // timeTask   
  14.     }     
  15.   
  16.     TimerTask task = new TimerTask() {  
  17.         @Override  
  18.         public void run() {  
  19.   
  20.             runOnUiThread(new Runnable() {      // UI thread   
  21.                 @Override  
  22.                 public void run() {  
  23.                     recLen--;  
  24.                     txtView.setText(""+recLen);  
  25.                     if(recLen < 0){  
  26.                         timer.cancel();  
  27.                         txtView.setVisibility(View.GONE);  
  28.                     }  
  29.                 }  
  30.             });  
  31.         }  
  32.     };  
  33. }  

方法二

TimerTask与Handler(不用Timer的改进型)

  1. public class timerTask extends Activity{  
  2.     private int recLen = 11;  
  3.     private TextView txtView;  
  4.     Timer timer = new Timer();  
  5.   
  6.     public void onCreate(Bundle savedInstanceState){  
  7.         super.onCreate(savedInstanceState);  
  8.   
  9.         setContentView(R.layout.timertask);  
  10.         txtView = (TextView)findViewById(R.id.txttime);  
  11.   
  12.         timer.schedule(task, 10001000);       // timeTask   
  13.     }     
  14.   
  15.     final Handler handler = new Handler(){  
  16.         @Override  
  17.         public void handleMessage(Message msg){  
  18.             switch (msg.what) {  
  19.             case 1:  
  20.                 txtView.setText(""+recLen);  
  21.                 if(recLen < 0){  
  22.                     timer.cancel();  
  23.                     txtView.setVisibility(View.GONE);  
  24.                 }  
  25.             }  
  26.         }  
  27.     };  
  28.   
  29.     TimerTask task = new TimerTask() {  
  30.         @Override  
  31.         public void run() {  
  32.             recLen--;  
  33.             Message message = new Message();  
  34.             message.what = 1;  
  35.             handler.sendMessage(message);  
  36.         }  
  37.     };  
  38. }  
方法三

Handler与Message(不用TimerTask)

  1. public class timerTask extends Activity{  
  2.     private int recLen = 11;  
  3.     private TextView txtView;  
  4.   
  5.     public void onCreate(Bundle savedInstanceState) {    
  6.         super.onCreate(savedInstanceState);    
  7.   
  8.         setContentView(R.layout.timertask);   
  9.         txtView = (TextView)findViewById(R.id.txttime);  
  10.   
  11.         Message message = handler.obtainMessage(1);     // Message   
  12.         handler.sendMessageDelayed(message, 1000);  
  13.     }    
  14.   
  15.     final Handler handler = new Handler(){  
  16.   
  17.         public void handleMessage(Message msg){         // handle message   
  18.             switch (msg.what) {  
  19.             case 1:  
  20.                 recLen--;  
  21.                 txtView.setText("" + recLen);  
  22.   
  23.                 if(recLen > 0){  
  24.                     Message message = handler.obtainMessage(1);  
  25.                     handler.sendMessageDelayed(message, 1000);      // send message   
  26.                 }else{  
  27.                     txtView.setVisibility(View.GONE);  
  28.                 }  
  29.             }  
  30.   
  31.             super.handleMessage(msg);  
  32.         }  
  33.     };  
  34. }  
  • 1
  • 2
  • 下一页

相关内容