public class TestingActivity extends Activity implements View.OnClickListener
{
ScheduledThreadPoolExecutor scheduler = new ScheduledThreadPoolExecutor(1);
ScheduledFuture now = null;
public void onCreate(Bundle savedInstanceState)
{
//oncreate
}
public void rollthedice()
{
//rollthedice
}
public void onClick(View view)
{
Runnable runner = new Runnable()
{
public void run()
{
rollthedice();
}
};
if(view.equals(continuous))
{
if(now == null)
now = scheduler.scheduleAtFixedRate(runner, 0, 250, TimeUnit.MILLISECONDS);
else
return;
}
if(view.equals(stop))
{
if(now != null)
{
now.cancel(true);
now = null;
}
else
return;
}
if(view.equals(roll))
rollthedice();
if(view.equals(exit))
System.exit(0);
}
我在Java应用程序中使用它并且它工作正常,我将它放入android项目并且它不起作用我想连续按钮连续运行rollthedice()并且停止按钮然后连续再次启动它来回停止
答案 0 :(得分:1)
因为你需要在带有标志的循环中添加它,试试这个:
public void run()
{
while (runningFlag){
//do something here
}
}
在开始时,您需要将标志设置为true然后启动线程,并在您希望它停止时将标志设置为false。
答案 1 :(得分:1)
你确定onCLick被执行了吗? 你有没有打电话
continuous.setOnClickListener(this);
stop.setOnClickListener(this);
等?
答案 2 :(得分:1)
您可以使用while循环并将条件设置为true以停止它(因为!)。您还应该高度考虑在单独的线程中进行滚动。如果你这样做,你可能需要也可能不需要处理程序。
boolean mPaused = false;
while(!mPaused) {
doSomething();
}
//to stop it set mPaused = true
//to resume call the method again
处理程序
//called by
Message msg0 = new Message();
msg0.obj = "someting";
handler.sendMessage(msg0);
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.obj.equals("something")) {
doSomething();
}
}
};