Android中定时器无法停止

7

我在Android中制作了一个应用程序,并像这样使用计时器...

try {
    CountDownTimer  start1 = new CountDownTimer(20000, 1000) {

        public void onTick(long millisUntilFinished) {
                TextView timeShow = (TextView)findViewById(R.id.showTime);
        timeShow.setText(" "+" 00:" +millisUntilFinished / 1000);
            }

但是我的问题是我不知道如何停止计时器。有什么想法吗?

我已经尝试过:

quitApplication.setOnClickListener(new OnClickListener() {
    public void onClick(View v) { 
        start1.cancel(); 
        Intent i = new Intent(v.getContext(), startGame.class);
        startActivity(i);
        // TODO Auto-generated method stub 
    } 
}); 
3个回答

10

start1.cancel() 是取消计时器所调用的正确方法。

您没有提供任何关于错误的细节或者为什么它对您不起作用的信息,但我猜测您的程序没有编译成功是因为您的变量 start1 是一个局部变量。它可能只在您的try块所在的方法内部有效。这意味着您的OnClickListener构造函数不知道start1是什么。

要解决此问题,只需将start1声明为类变量(放在所有方法之外但在类内部):

public class someClass {

CountDownTimer start1;
// blah some code
public void someMethod {
   try {
      start1 = new CountDownTimer() { //etc

这样做将使其他方法能够识别并与start1交互


2

我知道这篇文章已经有一年的历史了,但是对于未来的读者,你只需要将计时器作为最终调用即可。

就像这样:

final CountDownTimer  start1 = new CountDownTimer(20000, 1000) {}

那应该可以工作


1
这会有什么区别吗? - SMBiggs

1

当你想停止计时器时,请调用start1.cancel()


我使用了以下代码 start1.cancel...quitApplication.setOnClickListener(new OnClickListener() { public void onClick(View v) { start1.cancel(); Intent i = new Intent(v.getContext(), startGame.class); startActivity(i);// TODO Auto-generated method stub } }); - BIBEKRBARAL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接