Java 从方法中取消计时器
我在取消此方法中的计时器时遇到问题Java 从方法中取消计时器,java,android,timer,Java,Android,Timer,我在取消此方法中的计时器时遇到问题 public void nezablokovat() { int secondsToRun = 9999999; final ValueAnimator timern = ValueAnimator.ofInt(secondsToRun); timern.setDuration(secondsToRun * 1000).setInterpolator(new LinearInterpolator()); timern.addU
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
Listener中的另一个方法。
请问你有什么想法吗
如果我把timern.cancel()
放在这里:
void teplotahore() {
STup.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View view) {
timern.cancel();
}
}
}
);
}
编译器不知道
timern
我不知道整个类是如何构造的,但我相信您可以将“timern”“variable”移动到构造函数之外(在其上方),使其成为一个字段
字段类似于变量,但它对类中的所有方法都可见
例如:
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();
}
}
});
}
我不知道整个类是如何构造的,但我相信您可以通过这种方式将“timern”“variable”移动到构造函数之外(在它上面),使其成为一个字段 字段类似于变量,但它对类中的所有方法都可见 例如:
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();
}
}
});
}