Após a aula onde aprendemos a colocar um timer na aplicação, fui buscar na web outras formas que poderia ser feito. Encontrei que o comando "sleep()" também é utilizado para pausar aplicações, porém de uma forma diferente. Para experimentar esse comando, troquei o "Timer.scheduledTimer" pelo "sleep(5)". A princípio a aplicação foi pausada pelos 5 segundos configurados, entretanto durante a pausa percebi que a cor do botão não era alterada.
Conforme imagem acima, seguindo a ordem do código deveria ocorrer nesta ordem: verifica a resposta -> muda o backgroundcolor do botão -> espera 5 segundos -> chama a função configurarQuestao(). Entretanto durante a espera de 5 segundos o botão permanecia com a cor sem alterações, mas a alteração da cor vem antes da espera. Fazendo um debug do código, vi que mesmo após ser executada a linha de comando que altera a cor do botão, no simulador a cor não era alterada.
Minha dúvida é: Por que a execução do código não está seguindo a sequencia escrita mesmo que no debug ele siga a sequencia?
O escrito é: muda a cor -> espera -> chama a função configurarQuestao() Debug: muda a cor -> espera -> chama a função configurarQuestao() O que mostra no simulador: espera -> muda a cor -> chama a função configurarQuestao() ...... (neste caso como o timer não está entre a mudança de cor e a chamada da outra função, a mudança de cor não é visível ao usuário, ou seja, o timer não cumpre sua função).
Outro exemplo desse "problema" é quando executo um debug na func configurarQuestao(). Teoricamente, a cada alteração de cor e título percorridos, deveria alterar também na UI do simulador. EX: executa a linha que altera a cor e imediatamente a cor no simulador é alterada. Executa a linha que altera o título, imediatamente no simulador o título é alterado. Porém ocorre que somente após a conclusão da func as alterações são apresentadas no simulador (todas de uma única vez).