从方法取消计时器

时间:2016-02-11 22:53:44

标签: java android timer

我在使用此方法取消此计时器时遇到问题。

 public void nezablokovat() {
    int secondsToRun = 9999999;
    final ValueAnimator timern = ValueAnimator.ofInt(secondsToRun);
    timern.setDuration(secondsToRun * 1000).setInterpolator(new LinearInterpolator());
    timern.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            int elapsedSeconds = (int) animation.getAnimatedValue();
            int minutes = elapsedSeconds / 60;
            int seconds = elapsedSeconds % 60;

            if (seconds%10 == 1) {
                Pis("$$$");
            }
        }

        });
        timern.start();
    }

我想将timern.cancel();放入onClick Button的监听器中的其他方法。 请问你有什么想法?

如果我把timern.cancel()放在这里:

void teplotahore() {
    STup.setOnClickListener(
            new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    timern.cancel();
                    }
                }
            }

    );
}

编译器不知道timern

1 个答案:

答案 0 :(得分:0)

我不知道你们整个班级是如何构建的,但我相信你们可能只需要移动"计时器" "可变"在构造函数之外(在它之上),这使它成为一个字段。

字段就像一个变量,但它对类中的所有方法都是可见的。

例如:

final ValueAnimator timern = ValueAnimator.ofInt(secondsToRun);

public void nezablokovat() {
    int secondsToRun = 9999999;

    timern.setDuration(secondsToRun * 1000).setInterpolator(new LinearInterpolator());
    timern.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        int elapsedSeconds = (int) animation.getAnimatedValue();
        int minutes = elapsedSeconds / 60;
        int seconds = elapsedSeconds % 60;

        if (seconds%10 == 1) {
            Pis("$$$");
        }


    }

    });
    timern.start();
}

void teplotahore() {
    STup.setOnClickListener(
        new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                timern.cancel();
            }
        }

    });
}