我已经开始了一个非常酷的磨损应用程序,现在它只是一个按照用户选择的速度振动的节拍器。
我的问题是,当你退出应用程序或屏幕进入“环境模式”时,振动仍在继续,这很好,但当你再次打开应用程序时,它会打开一个新的“实例”(或者你说应用程序,所以先前选择的振动速度保持振动,当你选择一个新的时,你基本上有2个节奏振动。
这可能与我使用新线程进行计时并且线程保持运行这一事实有关。有办法防止这种情况吗?谢谢!
public void buttonTempoOnClick(final View v) {
Running = !Running;
Button button = (Button) v;
Thread Timer = new Thread(new Runnable() {
public void run() {
while (Running == true) {
vibrate(150);
try {
Thread.sleep(60000 / Tempo);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
});
Timer.start();
(振动指的是我在课堂上创造的空洞,它起作用。)
public void vibrate(int duration){
Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(duration);
}
编辑:默认情况下,我已经有一个public boolean Running
为假,当按下“开始”按钮时,它会切换布尔值并使用while(Running == true)循环启动新威胁通过再次按下按钮来停止振动就像魅力一样。
答案 0 :(得分:1)
尝试在管理线程的类中设置变量,例如
boolean isTempoOn = true;
在主活动中,在onResume()函数中,检查它是否已在运行。如果是这样,请不要重新开始。
也许发布适用的代码部分会有所帮助。