alla fine è quello che deve fare stare in attesa.
Il fatto che sia tutto bloccato credo sia perche una volta chiamato activate sta li e nn se ne esce finche nn viene fermato. prova a spostare i metodi setEnabled prima dell'activate.