【发布时间】:2014-01-28 18:06:27
【问题描述】:
我目前有一个当用户点击屏幕时启动的 while 循环。循环是无限的,当它感应到用户再次点击屏幕时应该停止。 (而且,如果再次点击,它将再次开始循环,等等。)我尝试以两种不同的方式打破循环,但都产生了不令人满意的结果:
方法 1: 当我尝试这种方法时,发生的情况是用户点击,循环开始。用户再次点击,并且该点击没有被注册,并且循环继续进行。
boolean playing = false;
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
if(!playing)
{
playing = true;
while(playing)
{
//do something here
}
}
else if(playing)
{
playing = false;
}
}
return false;
}
方法2:当我尝试这种方法时,发生的情况是用户点击,循环开始,经过一次迭代,然后停止。
boolean playing = false;
@Override
public boolean onTouch(View v, MotionEvent event)
{
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
if(!playing)
{
playing = true;
whileLoop:
while(playing)
{
//do something here
}
}
if(event.getAction() == MotionEvent.ACTION_DOWN)
{
playing = false;
break whileLoop;
}
}
return false;
}
我已经查看了这些问题,但对于我的具体情况都没有帮助:
那么我该如何实现这个while循环呢?我只想要一个简单的界面,用户点击它会打开/关闭 while 循环。
【问题讨论】:
-
关键问题是你在 UI 线程上运行你的无限循环,因此它被阻止接收更多的触摸事件。
标签: java android while-loop