Povo, minha experiência no Android é quase zero. Alguém me explica o que esse código faz? É uma thread esse Runnable?? Se for, como eu faço pra parar ele imediatamente quando eu precisar?
Abraços à todos e qualquer ajuda será bem vinda,
Povo, minha experiência no Android é quase zero. Alguém me explica o que esse código faz? É uma thread esse Runnable?? Se for, como eu faço pra parar ele imediatamente quando eu precisar?
Abraços à todos e qualquer ajuda será bem vinda,
Runnable é uma interface.
No seu caso, está sendo criada uma classe interna anônima que implementa a interface Runnable e já declarando diretamente seu método run que faz a Thread ser iniciada!
boardView.post(new Runnable(){ public void run(){ boardView.invalidate(); } });
Essa minha explicação foi do Java Core, mas tenho quase certeza que vale pra Android também.
[quote=rafadelnero]Runnable é uma interface.
No seu caso, está sendo criada uma classe interna anônima que implementa a interface Runnable e já declarando diretamente seu método run que faz a Thread ser iniciada!
boardView.post(new Runnable(){ public void run(){ boardView.invalidate(); } });
Essa minha explicação foi do Java Core, mas tenho quase certeza que vale pra Android também.[/quote]
Valeu Rafael. Cara, existe algum meio de eu pegar o id dessa thread pra eu poder parar ou até destruir ela quando eu precisar?
Abraços,
Olá
Runnable descrevem tarefas, no caso, está colocando uma tarefa para ser executada na UI thread, pelo método post do objeto view.
A sua tarefa só tem um comando, se fosse uma série de comandos você teria que ter checagens de chaves ou outros mecanismos para interromper a tarefa. Normalmente se usa isso numa estrutura de controle de loop.
A classe Thread implementa a interface Runnable.
Mas, no caso, você não está iniciando uma nova thread, e sim, colocando uma tarefa para ser executada numa thread já iniciada.
A thread que está rodando essa tarefa é a main thread, se destruir vai encerrar a aplicação!
Abraço
Olá amigos Rafael/Gusukuma, o meu problema eu acredito que seja bobo de resolver. O que eu estou fazendo também não é tão útil, é só um joguinho da velha pra minha filha e a minha sobrinha brincarem online com as coleguinhas, melhor do que introduzir Facebook a uma criança de 7 e uma pré-adolescente de 12 não concordam. O jogo eu peguei do seguinte turorial;
http://www.ibm.com/developerworks/br/library/x-androidtictactoe/index.html
O meu problema é o seguinte, quando eu do lado de cá marco a minha jogada(X ou O) a jogada que eu marquei pisca, a aplicação cria um TimerTask que fica atualizando a tela do jogo periodicamente, acontece que quando eu faço a jogada, esse TimerTask na classe UpdateTimer atualiza a tela antes de ser gravada a jogada no banco, aí a jogada apaga e só marca denovo quando atualiza denovo trazendo do banco, sei que parece besteira mas isso estraga totalmente a estética do jogo e também pode induzir os usuários a cometerem erros pensando que aquele quadro ali não foi marcado. E não tô conseguindo achar solução…
Rapaziada, agradeço a ajuda até aqui e qualquer ajuda é bem vinda,
[]'s.
Olá
Infelizmente não é tão simples, o próprio autor listou vários tópicos para implementar.
Eu dei uma olhada superficial no projeto.
A classe GameService precisaria ser implementada para acesso concorrente, já que é acessada por mais de uma thread.
Além disso, ela está com a matriz positions definida como public e justamente essa matriz que precisa ser protegida de acesso concorrente.
Talvez a estratégia do Timer/TimerTask devesse ser revista para recomeçar a contagem após o movimento.
Em resumo, tem muita coisa para fazer!
Abraço
Runnable é apenas uma interface com o método run() para ser implementado.
A ideia é que ele é um objeto que vai ser “rodado” em algum ponto e em alguma thread (ver programação paralela com Java).
No caso do Android, o método post das views vão enfileirar o Runnable para ser executado na MainThread quando disponivel.