为什么我的计时器在我停止时会崩溃 android activity?
Why does my Timer crashes my android activity when I stop it?
我正在尝试制作一个可以停止和重播计时器的切换按钮,它工作得很好,直到我添加了一个名为“Set_BPM”的新方法。
它启动并正确停止,当我停止后再次尝试启动它时它崩溃了。
这是我使用定时器的 class:
public class Metronome {
int miliseconds;
Timer timer = new Timer();
public Metronome () { }
public void Set_BPM (int bpm) {
miliseconds = (60000 / bpm);
}
public void Start (final Context context) {
TimerTask timerTask = new TimerTask () {
@Override
public void run() {
Sonidos.Tick(context);
}
};
timer.schedule(timerTask, 1000, miliseconds);
}
public void Stop () {
timer.cancel();
timer.purge();
}
}
我是这样称呼它的:
public void Encender_Metronomo (View view) {
if (tb_metronome.isChecked()) {
metronome.Set_BPM(Integer.parseInt(et_bpm.getText().toString()));
metronome.Start(this);
}
else
metronome.Stop();
Sonidos.Button(this);
}
我的Activity上面还有这个对象:
private Metronome metronome = new Metronome();
一旦你cancel()
一个Timer
,你就不能用它安排更多的任务。引用 the documentation:
Once a timer has been terminated, its execution thread terminates gracefully, and no more tasks may be scheduled on it.
我正在尝试制作一个可以停止和重播计时器的切换按钮,它工作得很好,直到我添加了一个名为“Set_BPM”的新方法。 它启动并正确停止,当我停止后再次尝试启动它时它崩溃了。
这是我使用定时器的 class:
public class Metronome {
int miliseconds;
Timer timer = new Timer();
public Metronome () { }
public void Set_BPM (int bpm) {
miliseconds = (60000 / bpm);
}
public void Start (final Context context) {
TimerTask timerTask = new TimerTask () {
@Override
public void run() {
Sonidos.Tick(context);
}
};
timer.schedule(timerTask, 1000, miliseconds);
}
public void Stop () {
timer.cancel();
timer.purge();
}
}
我是这样称呼它的:
public void Encender_Metronomo (View view) {
if (tb_metronome.isChecked()) {
metronome.Set_BPM(Integer.parseInt(et_bpm.getText().toString()));
metronome.Start(this);
}
else
metronome.Stop();
Sonidos.Button(this);
}
我的Activity上面还有这个对象:
private Metronome metronome = new Metronome();
一旦你cancel()
一个Timer
,你就不能用它安排更多的任务。引用 the documentation:
Once a timer has been terminated, its execution thread terminates gracefully, and no more tasks may be scheduled on it.