Ответ 1
Поделитесь java.lang.Object между двумя потоками, единственная цель которого - указать рабочий поток, когда он сможет продолжить свою работу. Всякий раз, когда рабочий поток достигает точки, где он должен спать, он делает это:
stick.wait();
Когда поток представления заканчивает работу onDraw, он вызывает это:
stick.notify();
Обратите внимание на то, что потоку представления принадлежит монитор на объекте. В вашем случае это должно быть довольно простым для обеспечения соблюдения с помощью небольшого блока синхронизации:
void onDraw() {
...
synchronized (stick) {
stick.notify();
}
} // end onDraw()
Обратитесь к javadoc для java.lang.Object по этим методам (и на всякий случай уведомите об этом); они очень хорошо написаны.