我目前有一个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线程上,以便阻止它接收进一步的触摸事件。 – sddamico