I am developing an android app where I have a Floating Action Button (or Button). Upon clicking this button, it should first disable itself, followed by a heavy task and then enable itself. The idea is, the user should not be able to click on the button until unless the task is ongoing.
Current code looks like:
public class MainActivity extends AppCompatActivity {
    private FloatingActionButton dummyButton;
 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dummyButton = findViewById(R.id.dummyButton);
        dummyButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                v.setEnabled(false); //or v.setClickable(false); or dummyButton.setEnabled(false); or dummyButton.setClickable(false);
                //some example code that takes upto 8seconds
                try {
                    Thread.sleep(8000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                v.setEnabled(true); //or v.setClickable(true); or dummyButton.setEnabled(true); or dummyButton.setClickable(true);
            }
        });
    }
}
The above code somehow does not work as expected. While the process is ongoing, the user is still able to click the button n times. All the n clicks stacks up the onClickListener events which is executed one after the other.
I am not sure where am I going wrong. Any kind of help/idea is appreciated. Thanks in advance.