我在以色列担任足球(足球)裁判,我被要求编写一份模拟我们即将到来的赛季健身测试的应用程序。
测试是间隔测试,用户可以输入他跑步,行走和设置多少时间。
每次开始/停止运行时都会发出蜂鸣声(beep
变量属于MediaPlayer
类型)。每次完成跑步/步行时,计时器都应重置。
以下代码几乎可以正常工作 - 在正确的时间内听到哔声,并在正确的数量后停止,但在天文台开始后屏幕会卡住......
非常感谢您的帮助! 谢谢,Yaad
private void testLoop() {
int i = 0;
boolean flag = true; //true = running, false = walking
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.start();
//run, walk, rep = integers that are set by user input
beep.start();
tvRunWalk.setText("Running");
tvRepNum.setText(String.format("Repetition Number: %d", i + 1));
while (i < rep) //rep = number of repetitions
{
if (SystemClock.elapsedRealtime() - chronometer.getBase() == run * 1000 && flag) //if running time is over and you are now running
{
chronometer.setBase(SystemClock.elapsedRealtime());
flag = false;
tvRunWalk.setText("Walking");
beep.start();
}
else if (SystemClock.elapsedRealtime() - chronometer.getBase() == walk * 1000 && !flag) //if walking time is over and you are now walking
{
chronometer.setBase(SystemClock.elapsedRealtime());
flag = true;
i++;
tvRunWalk.setText("Running");
tvRepNum.setText(String.format("Repetition Number: %d", i + 1));
beep.start();
}
}
}
答案 0 :(得分:0)
你的while循环阻止了用户界面。您最好使用AsyncTask
并将循环放在其doInBackground()
方法中,以便正确更新UI。
此处有更多信息:http://developer.android.com/reference/android/os/AsyncTask.html