2 ssummeraw ssummeraw 于 2013.01.18 16:38 提问

Android中秒表的停止问题

我在程序中创建了一个秒表 stopwatch,当然可以开始和停止。我用的以下的代码来实现这个功能。秒表可以开始,但是不能停止。

public class StopWatch2 extends Activity implements Runnable{

// text view influenced by the Thread
private TextView threadModifiedText;
int time=0;
Button b1,b2,b3;
/** Called when the activity is first created. */
Thread currentThread = new Thread(this);
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.stopwatch);

    b1=(Button)findViewById(R.id.button1);
    b2=(Button)findViewById(R.id.button2);
    b3=(Button)findViewById(R.id.button3);
    threadModifiedText = (TextView) findViewById(R.id.textView1);
    b1.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View view) 
        {
            currentThread.start();
        }

    });     
    b2.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View view) 
        {
            currentThread.stop();
        }

    });               
}

//Method you must override to control what the Thread is doing
@Override
public void run(){
    try {
        while(true){
            currentThread.sleep(1000, 0);
            threadHandler.sendEmptyMessage(0);
        }
        // signaling things to the outside world goes like this  

    } catch (InterruptedException e) {
    }   
} 
private Handler threadHandler = new Handler() {
    public void handleMessage(android.os.Message msg) {
        time++;
        threadModifiedText.setText(""+time);
    }
};
}

请求大家帮忙指出程序中的错误。谢谢!

3个回答

hxn_217
hxn_217   2013.01.28 10:50
已采纳

你应该使用一个类变量boolean shouldRun = true ;在你的run()方法中while应该这样

while(shouldRun)
{
 //implementation
}

b2.onClickListener()改成shouldRun = false;

vicluo
vicluo   2013.01.19 19:58

thread.stop方法jdk中强烈建议停用,如楼上所说,你可以在点button的时候设置一个flag,在while中判断此flag来退出while

xiaoyaovsxin
xiaoyaovsxin   2013.01.18 16:55

while(true),你应该在按停止的时候跳出。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
android自定义的一个时间秒表的布局
public class TimerView extends LinearLayout { private String defaultText = "01:00"; private TextView timerTextView; private Timer timer = new Timer(); private int second = 60; private TimerTask
Android 秒表
2012年10月28日,手机没有秒表,自己想做一个秒表来给自己用,现在马上做出一个实例来,这只是开始,以后做个界面漂亮的应用出来。废话不说,先上图:                源码: 建立项目:Stopwatch 代码清单:org/wwj/Stopwatch/Stopwatch.java package org.wwj.Stopwatch; import android.ap
VB “秒表”窗体中有两个按钮“开始/停止”按钮
Dim st, et, pt Private Sub Command1_Click() If Command1.Caption = "开始" Then st = Now Text1 = Format(st, "hh:mm:ss") Command1.Caption = "结束" Else et = Now Text2 = Format(et, "hh:mm:ss") Comm
Tkinter实现秒表功能
#-*-coding:utf-8-*- ''' Created on 2015年11月25日@author: Zroad '''from Tkinter import * import timeclass StopWatch(Frame): """实现一个秒表部件""" msec = 50 def __init__(self,parent = None,**kw):
怎么实现秒表的功能??有个按钮,一按开始计时,再按停止
怎么实现秒表的功能??有个按钮,一按开始计时,再按停止。 public   class   StopWatch   extends   javax.swing.JFrame   {             private   TimerThread   timer   =   null;             /**   Creates   new   form   StopWatch  
我的第一个android小项目——秒表计时器之感受
大四进入实习阶段,在学校那叫个什么都不会,很少写代码,这样的我去实习简直是痛苦至极。进如公司的第一个月,老大让我写一个计算器,一边看老罗的视频一边写代码,对一个没什么代码经验的我来说那叫个痛苦,写了一半就放弃了,这样过了一个月。第二个月老大让我写一个秒表,还是边看视频边做,做了两周基本成型,实现了基本的功能,老大让我修改一下页面的左右滑动效果,这个可把我折腾苦了,看到网上的那些例子,脑袋都看大了,
js 秒表计时器(开始,停止,清零)
var c=0 var t function timedCount()  {  document.getElementById('txt').value=c  c=c+1  t=setTimeout("timedCount()",1000)  } function stopCount()  {           clearTimeout(t)       }
Android实现计时器(Handle+Runable)
由于项目的运动模块在开始运动的时候会有一个计时器,来统计本次运动的时长,在此分享一个简单计时器的实现方式,主要通过Handle的postDelay方法来实现一个定时任务。/*****************计时器*******************/ private Runnable timeRunable = new Runnable() { @Override public
android开发——分秒计时器(可 开始/暂停/继续/停止)
最近在项目开发过程中,由于需要设计一个计时器的功能。所以在这里分享一个TimeUtils.可以实现 暂停/继续 的计时器; 话不多说,先看一下TimeUtils这个工具类; package cn.com.hbtv.testtimer; import android.os.Handler; import android.os.Message; import android.text.for
Android实现秒表计时器的程序设计
[java]view plaincopy package com.min;   import java.io.ByteArrayOutputStream;  import java.io.FileInputStream;  import java.io.IOException;  import java.util.Timer;  import java.util.TimerTask;