在Android中运行线程时,避免多次点击按钮

时间:2012-08-03 10:00:56

标签: java android multithreading

我有一个按钮,当用户点击按钮时,我运行一个Thread to do Something。

当用户点击我的按钮很多次时,我有很多线程同时运行。

我如何避免它,当用户多次点击时,我只运行了线程运行。当第一个线程完成时,第二个线程可以运行。

由于

4 个答案:

答案 0 :(得分:2)

您是否尝试过:按下按钮后添加myButton.setEnabled(false),然后将myButton.setEnabled(true)添加到主题的末尾。

答案 1 :(得分:2)

你需要保留一个布尔值,表明你已经对点击行动并启动了线程。像这样:

boolean threadStarted = false;

public void onClick(View v) {
    if (!threadStarted) {
        // start thread here
        threadStarted = true;
    } else {
        // Ignore this spurious click
    }
}

注意:在线程完成后不要忘记将布尔值重置为false

答案 2 :(得分:0)

使用asynctask进程。你可以看到this。使用该按钮如果您的ui无法触摸按钮,直到该过程结束。

答案 3 :(得分:0)

在xamarin android中遇到同样的问题。以不同的方式修复它。 Same Idea也适用于Android Java开发人员。

public  class SingleClickListener
{
    public SingleClickListener(Action<object, EventArgs> setOnClick)
    {
        _setOnClick = setOnClick;
    }
    private bool hasClicked;

    private Action<object, EventArgs> _setOnClick;

    public void OnClick(object v, EventArgs e)
    {
        if (!hasClicked)
        {
            _setOnClick(v, e);
            hasClicked = true;
        }
        reset();
    }

    private void reset()
    {
        Android.OS.Handler mHandler = new Android.OS.Handler();
        mHandler.PostDelayed(new Action(() => { hasClicked = false; }), 500);
    }
}
相关问题