Pergunta

Eu tenho dois segmentos em um aplicativo Android, um é o fio vista, eo outro é o segmento de trabalho. O que eu quero fazer é, dormir o segmento de trabalho até que o segmento vista termina a manipulação do método onDraw.

Como posso fazer isso? há qualquer espera para o sinal ou algo assim?

Foi útil?

Solução

Compartilhar um java.lang.Object entre os dois tópicos, cujo único propósito é contar o segmento de trabalho quando ele pode continuar seu trabalho. Sempre que o segmento de trabalho chega a um ponto onde ele deve dormir, ele faz isso:

stick.wait();

Quando o segmento vista termina seu trabalho onDraw, chama este:

stick.notify();

Observe a exigência de que o segmento de vista detém o monitor no objeto. No seu caso, esta deve ser bastante simples de aplicar com um bloco de sincronização pequena:

void onDraw() {
  ...
  synchronized (stick) {
    stick.notify();
  }
} // end onDraw()

Consulte o javadoc para java.lang.Object sobre esses métodos (e notifyAll, apenas no caso); eles estão muito bem escrito.

Outras dicas

Se você quiser um concurreny API de nível superior (com coisas como Barreiras), você pode tentar o backport do java 5 simultaneidade API, que funciona em java 1.3 e acima, e pode funcionar em Android. Os gostos de Object.wait / notificar vai funcionar, mas eles podem ser um pouco concisa.

Backport-util-concorrente

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top