自己做的一个简易的倒数计时器。用一个线程和handler做的。 输入设定的时间的界面:是SetTime的Acitivity 点击确定后转到下面的界面:CountdownTimer的Acitivity 暂停后的界面: 有什么错误或不足之处还请各位指点: 项目文件请到http://muyizhou.download.csdn.net/下载,0分。
环境:ubuntu10.04+eclipse galileo 部分代码贴出来: //实现三个按钮操作的内部类 private View.OnClickListener listener= new View.OnClickListener(){ @Override public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.start: { //开始计时 updateHandler.post(updateThread); break; } case R.id.pause: { //暂停计时 updateHandler.removeCallbacks(updateThread); break; } case R.id.reset: { //重新设置 updateHandler.removeCallbacks(updateThread); Intent intentReset=new Intent(); intentReset.setClass(CountdownTimer.this, SetTime.class); CountdownTimer.this.startActivity(intentReset); break; } } } }; //处理数据的线程,使用匿名内部类。 Runnable updateThread = new Runnable(){ @Override public void run() { //获取消息 Message msg=updateHandler.obtainMessage(); try{ Thread.sleep(1000); }catch(InterruptedException e){ e.printStackTrace(); } while(time>0){ time--; break; } hoursInt=time/3600; minutesInt=(time-hoursInt*3600)/60; secondsInt=time-hoursInt*3600-minutesInt*60; //把此消息发送到消息队列中 updateHandler.sendMessage(msg); //如果计时为0,就updateThread线程从线程队列中删除掉 if(time==0){ updateHandler.removeCallbacks(updateThread); } }}; Handler updateHandler=new Handler(){ //把消息从消息队列中取出处理 public void handleMessage(Message msg){ seconds.setText(secondsInt+""); minutes.setText(minutesInt+""); hours.setText(hoursInt+""); updateHandler.post(updateThread); } }; }