Pregunta

Tengo dos subprocesos en una aplicación de Android, uno es el subproceso de visualización y el otro es el subproceso de trabajo.Lo que quiero hacer es suspender el hilo de trabajo hasta que el hilo de vista finalice el manejo del método onDraw.

¿Como puedo hacer esto?¿Hay que esperar la señal o algo así?

¿Fue útil?

Solución

Comparta un java.lang.Object entre los dos subprocesos, cuyo único propósito es indicarle al subproceso de trabajo cuándo puede continuar su trabajo.Cada vez que el hilo de trabajo llega a un punto en el que debería dormir, hace lo siguiente:

stick.wait();

Cuando el hilo de vista finaliza su trabajo onDraw, llama a esto:

stick.notify();

Tenga en cuenta el requisito de que el hilo de vista sea propietario del monitor del objeto.En su caso, esto debería ser bastante sencillo de implementar con un pequeño bloque de sincronización:

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

Consulte el javadoc para java.lang.Object sobre estos métodos (y notifique a todos, por si acaso);están muy bien escritos.

Otros consejos

Si desea una API concurrente de nivel superior (con cosas como barreras), puede probar el backport de la API concurrente de Java 5, que funciona en Java 1.3 y superior, y puede funcionar en Android.Los gustos de Object.wait/notify funcionarán, pero pueden ser un poco concisos.

Backport-util-concurrente

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top