Android SurfaceView onDraw Вопрос

Метод OnDraw моего SurfaceView использует LinkedList путей, определенных TouchEvents на экране. Я хочу добавить функцию отмены, которая удаляет последний узел пути из LinkedList. Когда кнопка нажата, путь удаляется из списка, но SurfaceView не обновляется, пока я снова не удалю кнопку отмены или не коснусь экрана.

Спасибо, Эрик

OnDraw вызывается каждые 60 мс в потоке, но он не обновляет, что меня смущает.

Вы должны использовать:

postInvalidate(); 

не

 invalidate(); 

postInvalidate(); Сообщает основному потоку пользовательского интерфейса, чтобы перерисовать его в следующее удобное время. То, как вы это делаете, не будет работать на отдельном потоке.

Это потому, что Views обновляется только при вызове onDraw (), что происходит из-за активности экрана (например, вы касаетесь его) или когда это программно принудительно это делает.

Вы хотите его принудительно: используйте метод invalidate (), унаследованный от View.

Если удаление происходит внутри вас SurfaceView, просто напишите invalidate () ПОСЛЕ того, как вы закончите удаление. Если это происходит снаружи, то просто сделайте surfaceViewInstance.invalidate ().

Надеюсь это поможет