2
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(),停止按钮停止它,然后连续再次启动它并停止回来和向前

4

3 回答 3

1

因为您需要在带有标志的while循环中添加它,所以试试这个:

public void run()
{
while (runningFlag){
//do something here
}
}

在开始时,您需要将标志设置为 true,然后启动线程,当您希望它停止时,将标志设置为 false。

于 2012-11-04T22:22:41.893 回答
1

你确定 onCLick 被执行了吗?你打电话了吗

continuous.setOnClickListener(this);
stop.setOnClickListener(this);

ETC?

于 2012-11-04T22:23:45.970 回答
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();
        }
    }
};
于 2012-11-05T00:32:10.453 回答